les ' dans un commentaires

les ' dans un commentaires - PHP - Programmation

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 !

Reply

Marsh Posté le 30-10-2010 à 23:33:56   

Reply

Marsh Posté le 31-10-2010 à 02:48:58    

mysql_real_escape_string


---------------
"I can cry like Roger. It's just a shame I can't play like him" - Andy Murray, 2010
Reply

Marsh Posté le 31-10-2010 à 15:08:57    

ou htmlentities($str, ENT_QUOTES);


---------------
Tout à commencé par un rêve...
Reply

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.


---------------
"I can cry like Roger. It's just a shame I can't play like him" - Andy Murray, 2010
Reply

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 !

Reply

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.


---------------
"I can cry like Roger. It's just a shame I can't play like him" - Andy Murray, 2010
Reply

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 !


Message édité par narulepuissan le 31-10-2010 à 20:49:18
Reply

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 :)


---------------
"I can cry like Roger. It's just a shame I can't play like him" - Andy Murray, 2010
Reply

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 ....

Reply

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 :)


---------------
"I can cry like Roger. It's just a shame I can't play like him" - Andy Murray, 2010
Reply

Marsh Posté le 31-10-2010 à 21:53:19   

Reply

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 :(

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed