ayrıştırma hata [kapalı]

6 Cevap php

Bunun üzerine gözler taze dizi gerekir. Ben o amele dedi birinden bu kod var.

İşte hata:

PHP Parse error: parse error, expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING' in C:\Inetpub\wwwroot\2am\employment\send-email-form.php on line 19

Hat 19 GetUploadedFileInfo() ilk hattıdır. Ben 20 hattı ve ayrıca 21 için hata alıyorum. Onun belli $file_info dizi ama ne yanlış ile burada?

Şimdiden teşekkürler.

<?php 
$max_allowed_file_size = "100"; // this is size in KB 
list($name_of_uploaded_file, $type_of_uploaded_file, $size_of_uploaded_file) = GetUploadedFileInfo();
if(!Validate($name_of_uploaded_file, $type_of_uploaded_file, $size_of_uploaded_file, $max_allowed_file_size)) {
   exit();
}
LoadUploadedFile($name_of_uploaded_file);
$path_of_uploaded_file = "uploads/" . $name_of_uploaded_file;

   include_once('Mail.php');
   include_once('mime.php');

ComposeMail($path_of_uploaded_file);


//////////////////// Functions ////////////////////////

function GetUploadedFileInfo() {
   $file_info[] = basename($_FILES['uploaded_file']['name']);
   $file_info[] = substr($file_info[0], strrpos($file_info[0], '.') + 1);
   $file_info[] = $_FILES["uploaded_file"]["size"]/1024;
   return $file_info;
}


function Validate($name_of_uploaded_file, $type_of_uploaded_file, $size_of_uploaded_file, $max_allowed_file_size) {
   if($size_of_uploaded_file>$max_allowed_file_size ) {
       echo "Size of file is greater than" . $max_allowed_file_size . " KB. <a href='attachment_email_form.html'>Click Here to upload a smaller sized file.</a>";
      return false;
   }
$allowed_extension = array("jpg", "jpeg", "gif", "bmp");
for($i=0; $i<sizeof($allowed_extension); $i++) { 
   $allowed_extension[$i] = strtoupper($allowed_extension[$i]); 
}
$type_of_uploaded_file = strtoupper($type_of_uploaded_file);
if(!(in_array(strtoupper($type_of_uploaded_file),$allowed_extension))) {
   echo "You have uploaded a file with an extension of " . $type_of_uploaded_file . " . This type is not allowed. Please upload a file with allowed image extensions like jpg, jpeg, bmp, gif. <a href='attachment_email_form.html'>Click Here to upload a file with allowed extension.</a>";
   return false;
}
   return true;
}


function LoadUploadedFile($name_of_uploaded_file) {
   move_uploaded_file($_FILES["uploaded_file"]["tmp_name"], "uploads/" . $name_of_uploaded_file);
   return true;
}


function ComposeMail($name_of_uploaded_file) {
   $name = $_POST['name'];
   $user_message = $_POST['message'];
   $to = "RecipietnEmail@hotmail.com";
   $subject="An email with attachement is sent";
   $from = "SenderEmail@hotmail.com";
   $text = "A user " . $name . "has sent you this message and an attachment: " . $user_message;
   $message = new Mail_mime(); 
   $message->setTXTBody($text); 
   $message->addAttachment($name_of_uploaded_file);
   $body = $message->get();
   $extraheaders = array("From"=>$from, "Subject"=>$subject);
   $headers = $message->headers($extraheaders);
   $mail = Mail::factory("mail");
   $mail->send($to, $headers, $body);
   echo "Your Email with attachment was sent.";
}
?>

6 Cevap

Bana deli diyebilirsiniz, ama ben bunu denedim ve bir ayrıştırma hatası alamadım - Eğer doğru dosyasına bakarak (ya da bunun doğru versiyon) emin misin?

Düzenleme: Sonra aklıma tek şey tek tırnak başka bir yerde açık bırakılmış olan bir dize kapanış olmasıdır.

$file_info, bir işlev, bir değişken (dizi) var, değil.

Deftere kod hataları yoktur. Ben kopya / bir php dosyası ve çalıştırın tiftiği için yapıştırılan: php -l ve bu raporlar: No syntax errors detected in test.php

Hata iletisi bir dizin bekliyor gibi görünüyor $file_info[]. Bir dizinin sonuna ekleme için "[]" sözdizimi tanımıyor PHP'nin eski bir sürümünü kullanıyor musunuz?

Aldığınız hata ancak sözdizimi gayet iyi görünüyor, eşleşmeyen parantez veya tırnak göstermektedir. Ben hata olmadan bu işlevi çalıştırmak mümkün duyuyorum:


$ php -a
Interactive shell

php > function GetUploadedFileInfo() {
php {    $file_info[] = basename($_FILES['uploaded_file']['name']);
php {    $file_info[] = substr($file_info[0], strrpos($file_info[0], '.') + 1);
php {    $file_info[] = $_FILES["uploaded_file"]["size"]/1024;
php {    return $file_info;
php { }
php > print_r(GetUploadedFileInfo());
Array
(
    [0] => 
    [1] => 
    [2] => 0
)

@ PhiLho php dinamik dizi değişkenleri oluşturmak için izin vermiyor. Düzgün başlatılmadı varlık değildir, ancak bu yana siz değişken başka başlatıldı durumlarda beklenmeyen davranışlar alabilirsiniz. Değişkeni bir işlev içinde izole edilmiş ve küresel erişilebilir değil çünkü Ama, bu durumda gayet iyi.


$ php -a
Interactive shell

php > $a = array();
php > $a[] = 'Hello, world!';
php > print_r($a);
Array
(
    [0] => Hello, world!
)
php > $b[] = 'Hello, SO!';
php > print_r($b);
Array
(
    [0] => Hello, SO!
)

Ayrıca, PHP hangi sürümünü çalıştırıyorsunuz? Benim örnekler PHP 5.2.8-pl2-gentoo kullanın.

Tarayıcı doğrudan göndermek-posta-form.php istiyor, ya da içermesi veya send-email-form.php gerektiren diğer bazı PHP dosyası erişiyor?

Başka bir komut bunu içeren durumda, hiçbir eşsiz karakterler (Pars, tırnak, parantez, vb) herhangi bir PHP kodu bu dosyada daha önce dahil, ya da ana dosyada herhangi bir satır PHP kodu olup olmadığını kontrol ediniz.

Peki ben sorunu anladım.

Emin değil ne bu gerçekleştirilebilir ama ben (fonksiyon GetUploadedFileInfo ve 18 satırdan sonra bir boş satır bırakarak 20 hattı aşağı satır 19 itti) {