Page 1 sur 1
problem avec mysql_real_escape_string
Posté : 19 juin 2008, 12:37
par marcello2
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.
Posté : 19 juin 2008, 13:25
par katagoto
T'es-tu connexté à MySQL au début du script ???
Posté : 19 juin 2008, 14:21
par marcello2
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.
Posté : 19 juin 2008, 14:31
par Truc
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
Posté : 19 juin 2008, 14:47
par marcello2
Message reçu truc.
C'est beaucoup plus lisible effectivement.
Posté : 19 juin 2008, 15:46
par katagoto
Il faut que ta connexion soit ouverte avant d'utiliser ces fonctions, c'est là qu'il y a un problème...
Posté : 19 juin 2008, 17:32
par marcello2
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]
Posté : 19 juin 2008, 18:42
par katagoto
uniquement pour celles dont tu va te servir pour tes requêtes, pour les autres, un html specialchars() suffira

Posté : 19 juin 2008, 19:16
par marcello2
Merci katagoto

Posté : 20 juin 2008, 09:52
par Truc
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
en haut à gauche de ce sujet.
Posté : 20 juin 2008, 10:54
par marcello2
C'est fait