Pb de boucle je supose en php ( navigation dans un tableau associé)

fredericmaill Messages postés 144 Date d'inscription mercredi 16 juin 2004 Statut Membre Dernière intervention 22 mars 2006 - 12 oct. 2005 à 16:40
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 - 12 oct. 2005 à 17:21
Bonjour @ tous !!!


Voila je vous explique mon problème, je réalise un système d’authentification en php avec un system de sessions.


Ce script permet la récupération de tout les useravec leurs password,


Grâce a unerequête sql.


Je mets le résultat de cette requête dans un tableau associé grâce à la fonction : mysql_fetch_assoc, pour pouvoir traité plus simplement le resultat.





Le problème que je rencontre c que j’e n’arrive pas avancer dans ce tableau il me propose toujours que la premier enregistrement et ne passe passe pas au suivant/


Merci de m’aider, vous trouverez ci-dessous mon code source


<?php


session_start();


// login


if($_GET['action'] == 'login')


{


// récupération des variables


$pseudo = $_POST['pseudo'];


$password = $_POST['password'];


//


// verification des drois


//


// connexion


$conn = mysql_connect("localhost", "root", "");


// verification de la connection


if (!$conn)


{


echo "Impossible de se connecter à la base de données : " . mysql_error();


exit;


}


// Sélection de base de donnée


if (!mysql_select_db("test_session"))


{


echo "Impossible de sélectionner la base test_session: " . mysql_error();


exit;


}


// requette


$sql = "SELECT pseudo, password FROM user ";


$result = mysql_query($sql);


// vérification execution de la requette


if (!$result) {


echo "Impossible d'exécuter la requête ($sql) dans la base : " . mysql_error();


exit;


}


// Vérificationdu nombre de resultat obteneu par la requette


if (mysql_num_rows($result) == 0) {


echo "Aucune ligne trouvée, rien à afficher.";


exit;


}


// parcour du tableau associatif


// while ($row = mysql_fetch_assoc($result))


while ($row = mysql_fetch_assoc($result))


{


echo $row["pseudo"]; // pour test


echo $row["password"]; // pour test






if($pseudo $row["pseudo"] && $password $row["password"])


{


$_SESSION['pseudo'] = $row["pseudo"]; // création d'une variable de session


header("location: index.php"); // redirection// pb de header


exit;


//mysql_free_result($result); // supression des informations de la variable "$result"


}


// si le pseudo est faux


else if($pseudo != $row["pseudo"])


{


header("location: index.php?erreur=1");


exit;


// mysql_free_result($result); // supression des informations de la variable "$result"


}


else


{


header("location: index.php?erreur=2");


exit;


// mysql_free_result($result); // supression des informations de la variable "$result"


}


}


// mysql_free_result($result); supression des informations de la variable "$result"


}


// logout


else if($_GET['action'] == 'logout')


{


session_unset(); // suppression des variables de sessions


session_destroy(); // destruction de la session


header("location: index.php"); // redirection


}


?>

vive PHP !!!, vive la prog !!!

1 réponse

cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
12 oct. 2005 à 17:21
Salut,



tu utilises vraiment une méthode très gourmande pour vérifier le pass.



Fais plutôt ceci :



if(get_magic_quotes_gpc()===0)

{

$_POST['pseudo']=adslashes($_POST['pseudo']);

$_POST['password']=addslashes($_POST['password']);

}



$requete=mysql_query('SELECT COUNT(*) FROM user WHERE pseudo="'.$_POST['pseudo'].'" AND password="'.$_POST['password'].'"');

mysql_close();



ensuite pour récupérer le nombre d'enregistrements :



$r=mysql_fetch_row($requete);



if($r[0]==='0')

{

echo 'Aucun enregistrement retourné';

}

else

{

//traitement

}
<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li>
0
Rejoignez-nous