problem avec mysql_real_escape_string

Eléphanteau du PHP | 27 Messages

19 juin 2008, 12:37

J'ai ajouté mysql_real_escape_string et mon script d'authentification ne marche plus

if(isset($_POST['login'])) $login= utf8_decode($_POST['login']); else $login="inconnu";
if(isset($_POST['secret'])) $secret= utf8_decode($_POST['secret']); else $secret="inconnu";
$login=mysql_real_escape_string($login);
$secret=mysql_real_escape_string($secret)


Merci de votre aide.

Mammouth du PHP | 1668 Messages

19 juin 2008, 13:25

T'es-tu connexté à MySQL au début du script ???
"À ceux qui poursuivent leurs rêves et se spécialisent dans l'impossible" Joseph Kong

10 ans de PHP, déjà.

"moi jtrouve que katagoto il déchire!" Nagol

Eléphanteau du PHP | 27 Messages

19 juin 2008, 14:21

Oui. voila mon script complet habituel.

<?php
//appel des header pour bloquer le cache
require_once('blocageCache.php'); 
//active les sessions
session_start(); 
//récupération des variables envoyées par Flash
if(isset($_POST['login'])) $login= utf8_decode($_POST['login']); else $login="inconnu";
if(isset($_POST['secret'])) $secret= utf8_decode($_POST['secret']); else $secret="inconnu";
$login=addslashes($login);
$secret=addslashes($secret);



//--------------FONCTIONS 
function envoi($var, $val){
echo "&".$var."=".utf8_encode($val);
}
//--------CONNEXION ET SELECT BASE ------------
require_once('Connections/connexionLogin.php'); 
mysql_select_db("maBase");

//---------RECUP DES INFOS (depuis la table )
$query_rs = "SELECT * FROM utilisateurs WHERE login='$login' ";
$rs = mysql_query($query_rs, $connexionLogin) or die(mysql_error());
$row_rs = mysql_fetch_assoc($rs);
$total_rs=mysql_num_rows($rs);
//---------TEST DE D'EXISTENCE ET DE CONCORDANCE LOGIN/PWD
if(($secret == $row_rs['secret'])&&($total_rs!=0)){
//test si le controle du mot de passe est ok
$_SESSION['login']=$login;
//mémorise le login de l'utilisateur en session
envoi("retour","ok");
$idUtilisateur = $row_rs['idUtilisateur'];
$_SESSION['idUtilisateur']=$idUtilisateur;
envoi("idUtilisateur",$idUtilisateur);
$produit=$row_rs['produit'];
envoi("produit",$produit);
//envoie la confirmation de l'authentification à l'application Flash 
}
else
{
envoi("retour","pb");
//dans le cas contraire, un message d'erreur est renvoyé à l'application Flash
}

?>

J'ai simplement voulu remplacer
$login=addslashes($login);
$secret=addslashes($secret);

par

$login=mysql_real_escape_string($login);
$secret=mysql_real_escape_string($secret)  
pour me protéger d'une injection sql.
Mais je n'arrive plus à me connecter.

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

19 juin 2008, 14:31

Modération :
marcello2, afin d'améliorer la lisibilité de ton message,
pense à utiliser les balises [code] ou [php] (selon le langage utilisé).

Elles sont disponibles au-dessus de la zone de saisie de ton message
lorsque tu postes un nouveau message.

Des indications sont disponibles sur la manière de mettre en forme vos messages dans la FAQ

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphanteau du PHP | 27 Messages

19 juin 2008, 14:47

Message reçu truc.
C'est beaucoup plus lisible effectivement.

Mammouth du PHP | 1668 Messages

19 juin 2008, 15:46

Il faut que ta connexion soit ouverte avant d'utiliser ces fonctions, c'est là qu'il y a un problème...
"À ceux qui poursuivent leurs rêves et se spécialisent dans l'impossible" Joseph Kong

10 ans de PHP, déjà.

"moi jtrouve que katagoto il déchire!" Nagol

Eléphanteau du PHP | 27 Messages

19 juin 2008, 17:32

Pigé.
Faut-il utiliser mysql_real_escape_string sur toutes mes variables string ?

[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]

Mammouth du PHP | 1668 Messages

19 juin 2008, 18:42

uniquement pour celles dont tu va te servir pour tes requêtes, pour les autres, un html specialchars() suffira 8-)
"À ceux qui poursuivent leurs rêves et se spécialisent dans l'impossible" Joseph Kong

10 ans de PHP, déjà.

"moi jtrouve que katagoto il déchire!" Nagol

Eléphanteau du PHP | 27 Messages

19 juin 2008, 19:16

Merci katagoto :)

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

20 juin 2008, 09:52

Modération :
marcello2, si ta question est résolue, pense à ajouter le tag [Résolu]
pour indiquer aux personnes qui voudront consulter ce sujet qu'il contient une solution.
Tu peux réaliser cette opération en cliquant sur le bouton Image en haut à gauche de ce sujet.

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphanteau du PHP | 27 Messages

20 juin 2008, 10:54

C'est fait