Error PHP - Only variables should be passed by reference

cadou
Mesaje: 296

Error PHP - Only variables should be passed by reference

Am modificat un cod de upload (am adaugat o redimensionare) dar si inainte si dupa modificati primesc o eroare.

Cod: Selectaţi tot

session_start(); if(isset($_SESSION['nume'])) { $savefolder = 'poza-profil'; $max_size = 5000; $allowtype = array('jpg', 'jpeg'); $rezultat = ''; // Daca este primit din formular un fisier valid if(isset($_FILES['myfile'])) { // daca nu e selectat nici un fisier sa dea eroare if($_FILES['myfile']['name'] == '') { $rezultat = '<img src=/imagini/stare-error.png> <font color=red>Alege o poza!</font>'; } // daca e selectat fisieru, spor la incarcat else if(strlen($_FILES['myfile']['name']) > 2) { if(isset($_FILES['myfile'])) { // Verifica daca fisierul are tipul de extensie permis $type = end(explode(".", strtolower($_FILES['myfile']['name']))); if (in_array($type, $allowtype)) { // Verifica daca fisierul are marimea permisa if ($_FILES['myfile']['size']<=$max_size*1000) { // Daca nu sunt erori in procesul de copiere if ($_FILES['myfile']['error'] == 0) { // Seteaza locatia si numele pt. incarcare pe server $id = $_SESSION['id']; $folder = 'poza-profil/'; $thefile = $folder . $id. '.0.'. $type; // redimensionare poza // function fn_resize($image_resource_id,$width,$height) { $target_width =1000; $target_height =1000; $target_layer=imagecreatetruecolor($target_width,$target_height); imagecopyresampled($target_layer,$image_resource_id,0,0,0,0,$target_width,$target_height, $width,$height); return $target_layer; } $source_properties = getimagesize($_FILES['myfile']['tmp_name']); list($width, $height) = getimagesize($_FILES['myfile']['tmp_name']); $file_width=$width; $file_height=$height; if($source_properties[0] > 1000 AND $source_properties[1] > 1000) { $image_resource_id = imagecreatefromjpeg($_FILES['myfile']['tmp_name']); $target_layer = fn_resize($image_resource_id,$source_properties[0],$source_properties[1]); if(!imagejpeg($target_layer, $thefile)) { $rezultat = '<img src=/imagini/stare-error.png> Sa intamplat ceva, nu stiu ce este, revin-o peste cateva minute pentru a schimba poza de profil! Daca problema persista contacteaza-ne!'; } else { // Returneaza succes $rezultat = '<img src=/imagini/stare-succes.png> <font color=green>Poza ta de profil a fost incarcata cu succes, aceasta va aparea pe site dupa ce o va aproba un administrator al site-ului, daca aceasta respecta Termenii si conditiile site-ului!</font>'; } } // end redimensionare poza // } } } else { $rezultat = ' <br><font color=red> <img src=/imagini/stare-error.png> Fisierul <font color=blue>'. $_FILES['myfile']['name']. '</font> nu are tipul de extensie permis, se accepta doar format .jpg sau .jpeg de maxim 5 MB</font>'; } } } } } // daca e delogat sa dea eroare // else { $rezultat = '<img src=/imagini/stare-error.png> <font color=red>Pentru a schimba poza de profil trebuie sa fi logat pe site. Reincarca aceasta pagina !!!</font>'; } // Codeaza cu 'urlencode()' variabila $rezultat si o returneaza in 'onload', intr-un tag BODY $rezultat = urlencode($rezultat); echo '<body onload="parent.doneloading(\''.$rezultat.'\')"></body>';
Dar primesc un error_log in folderul in care am fisierul de upload la linia 21, aceasta linie este:

Cod: Selectaţi tot

$type = end(explode(".", strtolower($_FILES['myfile']['name'])));
In pagina de upload nu primesc eroare, codul merge ok, incarca, face ce trebuie, numai ca se creaza un fisier denumit error_log si imi spune asa:

Cod: Selectaţi tot

PHP Strict Standards: Only variables should be passed by reference in /.../.../up.php on line 21

MarPlo
Incearca asa, schimba linia de cod:

Cod: Selectaţi tot

$type = end(explode(".", strtolower($_FILES['myfile']['name'])));
Cu acest cod:

Cod: Selectaţi tot

$ar_fname = explode('.', strtolower($_FILES['myfile']['name'])); $type = end($ar_fname);

cadou
Multumesc Marplo !!!
Done :) :) :)

Subiecte similare