Page 1 sur 1

Erreur > addslashes () quand j'affiche l'image depuis la

Posté : 07 avr. 2007, 15:44
par zaknaou.
Re bonjour

Hé bien lorsque que je chage des photo par l'intermèdiaire d'un formulaire, le fichiers peut importe sa taille affiche dans la BDD 13 Octets et lorsque j'affiche le contennu du fichier dans une autre page [image en général] et bien message affichée est
addslashes ()
Le code après le formulaire :
<?php

session_start();

if(isset($_POST['de'])) $de = $_POST['de'];
else      $de="";

if(isset($_POST['pour'])) $pour = $_POST['pour'];
else      $pour="";

if(isset($_POST['objet'])) $objet = $_POST['objet'];
else      $objet="";

if(isset($_POST['message'])) $message = $_POST['message'];
else      $message="";

$xdate_jour = $_SESSION['xdate_jour'];
$xdate_mois = $_SESSION['xdate_mois'];
$xdate_annee = $_SESSION['xdate_annee'];
$xheure_heure = $_SESSION['xheure_heure'];
$xheure_minute = $_SESSION['xheure_minute'];

$le = "$xdate_jour-$xdate_mois-$xdate_annee à $xheure_heure:$xheure_minute";

$db = mysql_connect('sql.free.fr', 'XXXX', 'XXXX')  or die('Erreur de connexion '.mysql_error()); 
mysql_select_db('info.aqua',$db)  or die('Erreur de selection '.mysql_error());

if(isset($_POST['fic'])) $fic = $_POST['fic'];
else      $fic="";

$img_blob = file_get_contents ($_FILES ['fic']['tmp_name']);
$sqlax = "INSERT INTO images (le,de,ob,pour,message,img_blob) VALUES ('$le','$de','$objet','$pour','$message','addslashes ($img_blob)')";
$ret = mysql_query ($sqlax) or die (mysql_error ());
return true;

mysql_close($db);

header("location:../3a0a8cf36060bb33e9a3e4bdd108acfd.php");

?>
et le code pour afficher l'image :
<?php
if ( isset($_GET['id']) )
{
$id = intval ($_GET['id']);

$db = mysql_connect('sql.free.fr', 'XXXX', 'XXXX')  or die('Erreur de connexion '.mysql_error());
mysql_select_db('info.aqua',$db)  or die('Erreur de selection '.mysql_error());

$req = "SELECT id,img_blob FROM images WHERE id = '$id'";
$ret = mysql_query ($req) or die (mysql_error ());
$col = mysql_fetch_row ($ret);
if ( !$col[0] )
	{
		echo "Id d'image inconnu";
	}
else
	{
		echo $col[1];
	}
}
else
	{
		echo "Mauvais id d'image";
	}
?>
D'où peut bien venir l'erreur dans le premier code car je sais que cela ne vient pas du deuxième car lorsque je charge l'image depuis la base de donnée grâce à phpmyadmin l'image s'affiche correctement dans les code deux...

Donc ce la vient du code un...

Merci

Re: Erreur > addslashes () quand j'affiche l'image depuis

Posté : 07 avr. 2007, 15:50
par zeus
Quand on dit de toujours sortir les variables des chaines, c'est pour éviter ce genre d'erreur ... :roll:
$toto = "l'equipe";
echo addslashes($toto); // affiche "l\'equipe"
echo "addslashes($toto)"; // affiche "addslashes(l\'equipe)"
Ton erreur se situe ici :
$sqlax = "INSERT INTO images (le,de,ob,pour,message,img_blob) VALUES ('$le','$de','$objet','$pour','$message','addslashes ($img_blob)')";

Posté : 07 avr. 2007, 15:51
par Expreg
VALUES ('$le','$de','$objet','$pour','$message','".addslashes ($img_blob)."')"
d'ailleurs on ne fait pas addslashes dans une requête SQL !!!!
On utilise mysql_real_escape_string :
('$le','$de','$objet','$pour','$message','".mysql_real_escape_string ($img_blob)."')"

Posté : 08 avr. 2007, 22:52
par zaknaou.
Et bien dans ce dernier cas... L'image n'est pas du tout transférer dans la base de donnée...

Je sais aussi que je peut ajouter des fichiers dans un dossier et noter le chemin d'accès dans la bdd...

Comme je suis chez free.fr, le chmod n'est pas autoriser... donc est-ce que c'est possible d'y introduire des fichiers depuis le web ?

Posté : 08 avr. 2007, 23:58
par Ultim4T0m
Moi j'ai juste une question concernant ça
header("location:../3a0a8cf36060bb33e9a3e4bdd108acfd.php");
Ca veut dire que tu as un fichier qui s'appelle 3a0a8cf36060bb33e9a3e4bdd108acfd.php ? :shock:

Posté : 09 avr. 2007, 07:51
par Expreg
Et bien dans ce dernier cas... L'image n'est pas du tout transférer dans la base de donnée...
Aaaaaaaaaaaaaaaaah, j'avais même pas fait attention !!!!
Tu met tes images dans ta bd ????

Bon, alors, mettre ses images dans sa base de données, c'est une très, très très mauvaise idée.
On met les images dans un dossier et les liens vers ces images dans la table
En plus, chez Free...
Dès que ta demande de ressource va grimper, tu vas te faire taper sur les doigts, voire même te faire virer. :wink:

Donc si je peux me permettre un conseil :
- change ta politique de stockage d'images et tu n'en trouveras que du bénéfice.

Posté : 09 avr. 2007, 11:00
par Ryle
Ben disons que dans un système qui fait de l'analyse d'image, de la recherche de similitude de couleur etc. cela pourrait être interessant de pouvoir disposer des images dans une base... mais curieusement, je doute que ce soit son cas :) (tout come je doute que ce soit le cas de 99.9% des gens qui se lancent vers cette solution ;))

Et si free ne permet pas la fonction chmod() de php (ca m'étonne un peu, mais pourquoi pas) ils ne t'empêchent pas de modifier les droits d'un dossier quand tu y accèdes avec ton client ftp. Il te suffit donc de prévoir un dossier avec le bon mode pour que php puisse y uploader tes fichiers :)