Dans le cadre de la réalisation d'un site internet j'ai mis en place un système d'ajout/sup de photos en php.
Le principe est simple : Récupérer la photo grâce à un "form" , vérifier si son format est valide, enregistrer son nom dans la BDD ( URL) et enregistrer l'image dans un fichier ( exposes) et de ensuite renommer " l'url " et l'image contenue dans le dossier " exposes" par un nom formalisé.
Le programme marche pour un grand nombre de mes photos en ".jpg" : l'image et son nom sont correctement modifier par un nom plus formel.
J'ai cependant une erreur avec 2 photos très importantes toujours en ".jpg" : le fichier image est correctement modifié cependant le nom de l'image contenu dans la BDD n'est jamais modifié.
Je pensais que cela provenait du nom de mes photos , mais même en les renommant cela me pose probléme!
Je vous fais part de mon code php :
if (isset($photo) && $photo != "" ) {
// Pour raison de sécurité test des extensions
$extens = substr($photo_name, -3, 3);
$size = filesize($photo)/1064;
if ($size > 2000)
{
$text_err = "upload fichier impossible : Le fichier est trop gros";
unlink($fichier);
}
else if ($extens != "jpg" && $extens != "JPG" && $extens != "gif" && $extens != "GIF" ) {
$text_err = "upload photo impossible";
unlink($photo);
}
if ($text_err == "" ) {
$repphoto = "../expose/";
$nomphoto = $photo_name;
if (copy($photo, $repphoto.$nomphoto)) {
unlink($photo);
//enregistrement en base
$requete = "INSERT INTO img_exposes (id_photo, id_detail, url, legende) VALUES";
$requete .= "('', '".$id_partie."', '".addslashes($nomphoto)."', '".addslashes($legende)."' ) ";
$cnx->fExecQuery($requete);
$id = mysql_insert_id();
$newnomphoto = "photoID_".$id.".".strtolower($extens);
rename($repphoto.$nomphoto, $repphoto.$newnomphoto);
$thumb = new Thumbnail($repphoto.$newnomphoto);
$thumb->resize(150,150);
$thumb->save($repphoto."mini_".$newnomphoto);
$thumb->destruct();
$requete = "UPDATE img_exposes set url='".addslashes($newnomphoto)."' WHERE id_photo='".$id."'"; // ne marche pas avec certaines photos JPG (10% de mes images)
$cnx->fExecQuery($requete);
}
}
}
else $text_err = ERROR_MAX_FILE;
}
Je ne comprends pas pourquoi ce script fonctionne pour la plupart des mes images mais pas pour quelques unes... Je tiens à signaler que les image posant probléme répondent aux exigeances du programme : - de 2 mo et de format ".JPG"
Merci pour l'aide que vous pourrez m'apporter !
Waxxx