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