Salve,
Ho ripreso a studiare il php dopo tantissimo tempo e non ricordo quasi niente.
Ad ogni modo, ho spostato un vecchio progetto sviluppato in php 7 sul nuovo xammp con stack php8-mysql. Non si tratta di nulla di eccezionale. In pratica tramite form in cui si possono inserire pochi dati e una foto si crea una scheda di un utente.
Appena lanciato e provato ad inserire un record tramite form però mi sono ritrovato con questo errore:
codice:
array(7) { ["action"]=> string(12) "updateRecord" ["id"]=> string(1) "3" ["username"]=> string(4) "Marc" ["age"]=> string(2) "39" ["fiscalcode"]=> string(16) "FBRTTT39A17C444X" ["email"]=> string(17) "testtest@mail.com" ["MAX_FILE_SIZE"]=> string(7) "5000000" } UPDATE users set username='Marc', fiscalcode='FFRTTT48A17C444X' , age=39, email ='testtest@mail.com' WHERE ID=3
Fatal error: Uncaught Error: Call to undefined function imagecreatefromjpeg() in C:\xampp\htdocs\corsophp\functions.php:219 Stack trace: #0 C:\xampp\htdocs\corsophp\updateRecord.php(59): copyAvatar('3') #1 {main} thrown in C:\xampp\htdocs\corsophp\functions.php on line 219
Questa la linea di codice incriminata:
Codice PHP:
$imgResource = imagecreatefromjpeg($_FILES['avatar']['tmp_name']);
Questa l'intera funzione in cui si trova la linea sopra:
Codice PHP:
function updateuser(array $array){
var_dump($array);
$mysqli = $GLOBALS['mysqli'];
$id = (int)$array['id'];
$username = $mysqli->escape_string($array['username']);
$fiscalcode = $mysqli->escape_string($array['fiscalcode']);
$email = $mysqli->escape_string($array['email']);
$age = (int)$array['age'];
$sql = "UPDATE users set username='$username', fiscalcode='$fiscalcode'";
$sql .=" , age=$age, email ='$email' WHERE ID=$id";
$mysqli->query($sql);
echo $sql;
return $mysqli->affected_rows;
}
function copyAvatar($userid){
$res = [
'success' => false,
'message' => 'Problemi salvando immagine'
];
if(empty($_FILES)){
$res['message'] = 'Nessun file caricato';
return $res;
}
if($_FILES['avatar']['error']){
return $res;
}
if($_FILES['avatar']['size']>MAX_FILE_SIZE){
$res['message'] = 'Il file supera '.MAX_FILE_SIZE.' bytes';
return $res;
}
if($_FILES['avatar']['type']!='image/jpeg'){
$res['message'] = 'Il file non è jpeg';
return $res;
}
$imgResource = imagecreatefromjpeg($_FILES['avatar']['tmp_name']);
list($orig_w, $orig_h) = getimagesize($_FILES['avatar']['tmp_name']);
$rationOrg = $orig_w/$orig_h;
$rationThumb = MAX_FILE_WIDTH/MAX_FILE_HEIGHT;
//ratio avatar Big
$rationBig = MAX_FILE_WIDTH_BIG/MAX_FILE_HEIGHT_BIG;
$calcWith = MAX_FILE_WIDTH;
$calcHeight = MAX_FILE_HEIGHT;
//BIG
$calcWithBig = MAX_FILE_WIDTH_BIG;
$calcHeightBig = MAX_FILE_HEIGHT_BIG;
if($rationThumb > $rationOrg){
$calcWith = $calcWith*$rationOrg;
}else {
$calcHeight = $calcWith/$rationOrg;
}
//BIG
if($rationBig > $rationOrg){
$calcWithBig = $calcWithBig*$rationOrg;
}else {
$calcHeightBig = $calcWithBig/$rationOrg;
}
$scaleImg = imagescale($imgResource, $calcWith, $calcHeight);
$avatarname = $userid.'.jpg';
$result = imagejpeg($scaleImg, AVATAR_DIR.$avatarname);
//Ridimensionamento e salvataggio BIG
$scaleImgBig = imagescale($imgResource, $calcWithBig, $calcHeightBig);
$avatarnameBig = $userid.'_Big'.'.jpg';
$resultBig = imagejpeg($scaleImgBig, AVATAR_DIR.$avatarnameBig);
if(!result){
$res['message'] = 'Impossibile salvare miniatura';
return $res;
}
$res['success'] = true;
$res['message'] ='Immagine caricata';
$sql = "UPDATE users set avatar='$avatarname' where id=$userid";
$GLOBALS['mysqli']->query($sql);
return $res;
}
Non sono ancora in grado di capire dove mettere le mani per risolvere il problema.
Potete aiutarmi per piacere?
Grazie