Mon code pour authentifier le user ne marche

Résolu
parvn Messages postés 49 Date d'inscription   Statut Membre Dernière intervention   -  
parvn Messages postés 49 Date d'inscription   Statut Membre Dernière intervention   -
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 4089 Date d'inscription   Statut Contributeur Dernière intervention   857
 
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   Statut Membre Dernière intervention  
 
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 4089 Date d'inscription   Statut Contributeur Dernière intervention   857
 
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   Statut Membre Dernière intervention  
 
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 4089 Date d'inscription   Statut Contributeur Dernière intervention   857
 
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   Statut Membre Dernière intervention  
 
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