Photo jpg et BDD : Veritable enigme ! - PHP - Programmation
Marsh Posté le 25-04-2008 à 09:50:24
Faut regarder s'il y a une particularité dans le nom de ces images (quotes, espaces ...)
Marsh Posté le 25-04-2008 à 09:56:50
mrbebert a écrit : Faut regarder s'il y a une particularité dans le nom de ces images (quotes, espaces ...) |
Je les ai renommée pourtant , sans succès ! Est-il possible d'avoir autre chose que le "nom de l'image" dans le "nom de l'image" ? Par exemple un nom d'image louche composé d'autres codes cachés : comme par exemple impossibilité de renommer avec une commande SQl?
Marsh Posté le 25-04-2008 à 10:21:15
Est-ce que le fichier image est bien creé et avec la bonne ID dans le nom ?
L'enregistrement dans la base de données a t-il bien eu lieu ?
Pourquoi ne pas créer la miniature directement avec le fichier uploadé et l'ajouté à ta table en une fois plutot que de faire 2 réquétes à chaque fois. Tu peut surement te passer de l'id dans le nom surtout si c'est juste pour éviter qu'une image ait le même nom qu'une autre.
Pour info, le fait de vérifier seulement l'extension ne sécurise pas complétement, l'astuce de la double extention fonctione sur pas mal d'hebergeur. (ex : hack.php.jpg), si la photo original est conservée avec le nom d'origine dans un repertoire, méfie toi quand même.
Marsh Posté le 25-04-2008 à 10:23:38
Au risque de dire n'importe quoi et de m'attirer les foudres des plus experimentés ici, je vais quand même dire ce qui me passe en premier par la tête (ce qui suit est à prendre avec des pincettes) :
Alors je dirais qu'il s'agit d'un problème d'identifiant.
Cette ligne pose peut-être problème :
$id = mysql_insert_id();
Essaie (juste pour voir) de récupère l'identifiant d'une autre manière, histoire d'écarter cette possibilité tout au moins, en faisant quelque chose du style :
$requete = "SELECT id FROM img_exposes WHERE url='$nomphoto'";
Je ne dis pas que c'est ça mais sait-on jamais
Marsh Posté le 25-04-2008 à 10:32:47
Tu ne dis pas n'importe quoi, au contraire, c'est dailleur pour la même raison que je demande si la miniature crée a la bonne ID dans son nom.
Marsh Posté le 25-04-2008 à 17:21:39
masterpsx a écrit : Tu ne dis pas n'importe quoi, au contraire, c'est dailleur pour la même raison que je demande si la miniature crée a la bonne ID dans son nom. |
Problème réglé : La résolution de l'image qui "buggait" était trop élevée pour le serveur : impossibilité de créer une miniature avec thumbnail.
Le code qui suivait n'était donc pas interprété par l'ordinateur!
Marsh Posté le 25-04-2008 à 09:42:44
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