Page 1 sur 1

Problème mysql_real_escape_string

Posté : 18 mars 2010, 11:43
par Benamour Jr
Bonjour,

Je suis en train de programmer un mini chat
Sur la page qui reçoit le pseudo et le message de l'utilisateur et qui utilise ces deux variables dans une requete SQL visant à les ajouter à ma base de donnée, j'essaie d'appliquer un mysql_real_escape_string afin d'éviter une possible injection SQL. Problème, j'ai comme résultat un pseudo et un message vide qui s'affiche... Par contre, si je retire les deux lignes correspondants au mysql_real_escape_string, mon code fonctionne parfaitement... Pourquoi ?

Voici ma page :
<?php
if (isset($_POST['pseudo'], $_POST['message']))
{
	// Se connecter à la BDD
	try
	{
		$bdd = new PDO('mysql:host=localhost;dbname=test', 'root', '');
	}
	catch(Exception $e)
	{
        die('Erreur : '.$e->getMessage());
	}
	
	// Vérifier que tous les champs ont été remplis
	if ($_POST['pseudo'] == "" OR $_POST['message'] == "")
	{
		echo 'Vous avez oublié de spécifier votre pseudo ou votre message !';
		die;
	}
	
	// Sécuriser les balises extérieures
	$_POST['pseudo'] = htmlspecialchars($_POST['pseudo']);
	$_POST['message'] = htmlspecialchars($_POST['message']);
	$_POST['pseudo'] = mysql_real_escape_string($_POST['pseudo']);
	$_POST['message'] = mysql_real_escape_string($_POST['message']);
	
	// Requête SQL pour insérer les données dans la table
	$req = $bdd->prepare('INSERT INTO mini_chat(pseudo, message) VALUES(:pseudo, :message)');
	$req->execute(array('pseudo' => $_POST['pseudo'], 'message' => $_POST['message']));
	
	// Redirection vers le mini chat
	header('Location: TP_mini_chat.php');
}
?>

Re: Problème mysql_real_escape_string

Posté : 18 mars 2010, 11:54
par stealth35
mysql_real_escape_string ne marche qu'avec l'extension "mysql" tu pourrais utilise mysql_escape_string, mais c'est inutile puisque t'utilise PDO avec des requete preparer, tu n'as pas a te soucié des injections


ps : utilise "exit" au lieu de "die" , die étant un alias de exit

:wink:

Re: Problème mysql_real_escape_string

Posté : 18 mars 2010, 12:00
par Benamour Jr
oki nickel, et merci du conseil ;)