Mon code pour authentifier le user ne marche

Résolu/Fermé
parvn Messages postés 49 Date d'inscription mardi 4 août 2009 Statut Membre Dernière intervention 7 mai 2012 - 11 août 2009 à 10:17
parvn Messages postés 49 Date d'inscription mardi 4 août 2009 Statut Membre Dernière intervention 7 mai 2012 - 12 août 2009 à 08:56
Bonjour,
j'ai mon code pour authentifier l'administrateur du guestbook, qui ne marche pas, il me fais bien apparaitre les deux champs pour mettre le username et le password, mais quand je clique sur ok apres avoir inserer les donnees rien ne seproduit il m'invite toujours a inserer mon username et password.
Voici mon code:

<?php
include "connection.php";
function authenticate ($realm="Secure Area"
,$errmsg="Please enter a username and password") {

Header("WWW-Authenticate:Basic realm=\"$realm\"");
Header("HTTP/1.0 401 Unauthorized");
die($errmsg);
}


$login=$_SERVER['PHP_AUTH_USER'];
$password=$_SERVER['PHP_AUTH_PW'];

authenticate("Secure Area", "Please enter a username and password");

if (empty($login) || empty($password)){
echo "your username and password please\n";
}
if(!empty($login) && !empty($password)) {
$query = "select * from guestbook_admin where username = '$login' and password=password('$password')";
$result = mysql_result($query);
if ($result) {
list($valid_user) = mysql_fetch_row($result);
echo " welcome mr $login\n";
}


if (!$result || empty($valid_user)) {

authenticate($realm,$errmsg,"query");
}
}
print "<p><b>Editing as $login</b></p>\n";
?>
A voir également:

4 réponses

kij_82 Messages postés 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
11 août 2009 à 11:07
Bonjour,

Ton erreur vient de cette ligne :
$result = mysql_result($query); 


Ce n'est pas mysql_result mais mysql_query qu'il faut faire. Si tu n'as pas encore exécuté ta requête SQL, tu ne peux pas en récupérer le résultat ;)

Ton code devrait donc être comme ceci :
$query = "select * from guestbook_admin where username = '$login' and password=password('$password')";
$result = mysql_query($query);
if ($result != null && (mysql_num_rows($result) == 1) ) {
list($valid_user) = mysql_fetch_row($result);
echo " welcome mr $login\n";
} 


As-tu bien ouvert ta connexion à ta base de donnée avant d'essayer d'exécuter ta requête SQL ?
Si oui, il faut bien penser à la fermer avant la fin de ton script, si tu las laisse ouvert ça risque de te poser problème par la suite.
0
parvn Messages postés 49 Date d'inscription mardi 4 août 2009 Statut Membre Dernière intervention 7 mai 2012
11 août 2009 à 15:33
merci, mais j'ai corriger a la place de mysql_result j'ai mis mysql_query, et j'ai ecrit tel que tu me l'a indique mais ça ne change rien, c'est la meme chose aucune action il m'invite tjrs a inserer le username et password.
Je ne comprend pas
0
kij_82 Messages postés 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
11 août 2009 à 15:56
En fait j'ai du mal à comprendre où tu récupère ton user et mot de passe que tu as tapé, à part ici :

$login=$_SERVER['PHP_AUTH_USER'];
$password=$_SERVER['PHP_AUTH_PW']; 


Mais comme ce code est interprété coté serveur, tes variables la première fois sont nulles, donc tu n'obtiens rien dans $login et $password, et tes tests ne passent pas.

Je dirai qu'il faut ré-organiser ton script.
0
parvn Messages postés 49 Date d'inscription mardi 4 août 2009 Statut Membre Dernière intervention 7 mai 2012
12 août 2009 à 08:41
Merci ok ça marche maintenant, c'etait ça le probleme j'ai reorganise le code et a present c'est ok.
0
kij_82 Messages postés 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
12 août 2009 à 08:53
Poste ton code pour que les gens qui lisent ce sujet puisse avoir l'intégralité de la réponse, au cas où ils aient le même soucis un jour.

Merci.
0
parvn Messages postés 49 Date d'inscription mardi 4 août 2009 Statut Membre Dernière intervention 7 mai 2012
12 août 2009 à 08:56
ok voici mon code qui marche sans probleme:


<?php
include "connection.php";

function authenticate ($realm="Secure Area"
,$errmsg="Please enter a username and password") {

Header("WWW-Authenticate:Basic realm=\"$realm\"");
Header("HTTP/1.0 401 Unauthorized");
die($errmsg);
}


$login=$_SERVER['PHP_AUTH_USER'];
$password=$_SERVER['PHP_AUTH_PW'];



if (empty($login) || empty($password)){
authenticate("Secure Area", "Please enter a username and password");
}
else {
$query = "select * from guestbook_admin where username = '$login' and password=password('$password')";
$result = mysql_query($query);
if ($result) {
list($valid_user) = mysql_fetch_row($result);
echo " welcome mr $login\n";
}



if (!$result || empty($valid_user)) {

authenticate($realm,$errmsg,"query");
}
}
print "<p><b>Editing as $login</b></p>\n";
?>
0