Error PHP - Only variables should be passed by reference
Scris: Sâm Noi 18, 2017
Am modificat un cod de upload (am adaugat o redimensionare) dar si inainte si dupa modificati primesc o eroare.
Dar primesc un error_log in folderul in care am fisierul de upload la linia 21, aceasta linie este:
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
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>';
Cod: Selectaţi tot
$type = end(explode(".", strtolower($_FILES['myfile']['name'])));
Cod: Selectaţi tot
PHP Strict Standards: Only variables should be passed by reference in /.../.../up.php on line 21