les ' dans un commentaires - PHP - Programmation
Marsh Posté le 31-10-2010 à 02:48:58
mysql_real_escape_string
Marsh Posté le 31-10-2010 à 15:08:57
ou htmlentities($str, ENT_QUOTES);
Marsh Posté le 31-10-2010 à 16:45:09
stef_dobermann a écrit : ou htmlentities($str, ENT_QUOTES); |
Pour le coup, mieux vaut utiliser mysql_real_escape_string. Ce dernier sert à protéger la requête SQL de tous les caractères dangereux possible. En plus, htmlentities va remplacer les quotes par un équivalent HTML (ce qui n'est pas forcément souhaitable) là ou mysql_real_escape_string va préserver les guillemets sous leur forme originale.
Marsh Posté le 31-10-2010 à 20:20:01
Bonsoir,
D'accord,
en sachant que j'ai ce code , comment vais je devoir le modifier ?
<?php
require "../config.php";
mysql_connect(DB_HOST,DB_LOGIN,DB_PASS);
mysql_select_db(DB_BDD);
extract($_POST);
$sql="INSERT INTO news (titre,contenu,pseudo,avatar) VALUES ('$titre','$contenu','$pseudo','$avatar')";
$req=mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
header("Location: index.php" );
?>
merci !
Marsh Posté le 31-10-2010 à 20:39:28
mysql_real_escape_string sur $titre, $contenu, $pseudo et $avatar. Bref, chaque variable que tu vas passer dans la requête et qui est susceptible de contenir des caractères indésirables.
Marsh Posté le 31-10-2010 à 20:44:16
Oui mais je ne peux pas faire comme ça ?!
....
<?php
require "../config.php";
mysql_connect(DB_HOST,DB_LOGIN,DB_PASS);
mysql_select_db(DB_BDD);
extract($_POST);
$sql="INSERT INTO news (titre,contenu,pseudo,avatar) VALUES (mysql_real_escape_string($titre),mysql_real_escape_string($contenu),mysql_real_escape_string($pseudo),mysql_real_escape_string($avatar)";
$req=mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
header("Location: index.php" );
?>
Si ?
ça fait pas très très longtemps que j'ai appris le PhP soyez indulgent de mes conneries !
Marsh Posté le 31-10-2010 à 21:21:30
"Oui mais je ne peux pas faire comme ça ?!"
Non, je te laisse réfléchir pourquoi
Marsh Posté le 31-10-2010 à 21:33:45
justement, j'ai beau réfléchir je trouve pas ...
D'après un exemple,
"SELECT * FROM users WHERE user = '" . mysql_real_escape_string($user) . "' AND password = '" . mysql_real_escape_String($password) . "';
le PhP j'en fais depuis peu de temps ....
donc j'ai pas les bon réflexes ....
Marsh Posté le 31-10-2010 à 21:53:19
"SELECT * FROM users WHERE user = '" . mysql_real_escape_string($user) . "' AND password = '" . mysql_real_escape_String($password) . "';
Ca c'est déjà beaucoup plus juste. A toi de voir la différence entre ta ligne de code et celle que tu viens de poster. Indice: Ca a un rapport avec les guillemets
Marsh Posté le 31-10-2010 à 22:07:06
Oui mais moi c'est pas "SELECT * FROM ....
mais "INSERT INTO ....
ça change pas quelque chose ?
PS: je suis pas fort en énigmes
Marsh Posté le 30-10-2010 à 23:33:56
Bonsoir,
j'ai fait un système de commentaires.
Quand dans le contenu je mes un ' ça me met une ERREUR SQL !
donc je dois mettre \' pour corriger ce problème or les visiteurs ne vont pas s'amuser à mettre \' !
Avez vous une solution??
Merci de Vos réponses !