Problème mysql_real_escape_string

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Problème mysql_real_escape_string

Re: Problème mysql_real_escape_string

par Benamour Jr » 18 mars 2010, 12:00

oki nickel, et merci du conseil ;)

Re: Problème mysql_real_escape_string

par stealth35 » 18 mars 2010, 11:54

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:

Problème mysql_real_escape_string

par Benamour Jr » 18 mars 2010, 11:43

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');
}
?>