error de análisis, esperando `T_STRING 'o` T_VARIABLE' o `T_NUM_STRING '

votos
0

Necesito una nueva mirada en esto. Recibí este código de alguien que dijo que funcionó.

Aquí está el error:

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 

La línea 19 es la primera línea de GetUploadedFileInfo(). Obtengo el error para la línea 20 y 21 también. Es obviamente con la $file_infomatriz, pero ¿qué hay de malo aquí?

<?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.;
}
?>
Publicado el 12/03/2009 a las 17:42
fuente por usuario
En otros idiomas...                            


6 respuestas

votos
4

Llámame loco, pero probé esto y no obtuve un error de análisis - ¿estás seguro de que estás buscando el archivo correcto (o la versión correcta)?

Editar: entonces lo único que se me ocurre es que las comillas simples están cerrando una cadena que se ha dejado abierta en otro lado.

Respondida el 12/03/2009 a las 17:50
fuente por usuario

votos
2

$ file_info no es una función, es una variable (matriz).

El código que publicaste no tiene ningún error. Lo copié / pegué a un archivo php y ejecuté lint: php -l e informa: No se detectaron errores de sintaxis en test.php

Respondida el 12/03/2009 a las 18:00
fuente por usuario

votos
0

Bueno, descubrí el problema.

No estoy seguro de lo que se logró, pero presioné la línea 19 hacia abajo hasta la línea 20, dejando una línea en blanco después de la línea 18 de la función GetUploadedFileInfo () {

Respondida el 12/03/2009 a las 23:30
fuente por usuario

votos
0

¿El navegador solicita directamente send-email-form.php, o está accediendo a algún otro archivo PHP que incluye o requiere send-email-form.php?

Si es el caso de que otro script lo incluya, verifique que no haya caracteres no coincidentes (pares, comillas, llaves, etc.) en cualquier código PHP incluido antes de este archivo, o en cualquier código PHP en línea en el archivo principal.

Respondida el 12/03/2009 a las 19:00
fuente por usuario

votos
0

El error que está recibiendo sugiere un paréntesis o citas que no coinciden, sin embargo, la sintaxis se ve bien. Puedo ejecutar esa función sin error:


$ 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 te permite crear dinámicamente variables de matriz. Sin embargo, dado que no se inicializa correctamente, puede tener un comportamiento inesperado en los casos en que la variable se inicializó en otro lugar. Pero dado que la variable está aislada dentro de una función y no se accede globalmente, está bien en este caso.


$ 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!
)

Además, ¿qué versión de PHP estás ejecutando? Mis ejemplos usan PHP 5.2.8-pl2-gentoo.

Respondida el 12/03/2009 a las 18:17
fuente por usuario

votos
0

El mensaje de error parece que está esperando un índice $file_info[]. ¿Estás usando una versión antigua de PHP que no reconoce la []sintaxis " " para agregar al final de una matriz?

Respondida el 12/03/2009 a las 18:15
fuente por usuario

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more