Comment authentifier l'administrateur

Résolu/Fermé
parvn Messages postés 49 Date d'inscription mardi 4 août 2009 Statut Membre Dernière intervention 7 mai 2012 - 10 août 2009 à 22:21
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:54
Bonjour,

j'ai ma function authenticate que voici :

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);
}

qui oblige l'utulisateur d'inserer un username et un password, la fonction marche car elle fait bien apparaitre les deux champs pour le username et le password, mais mon probleme c comment faire pour prendre ces donnees entrees par l'utulisateur pour faire une verification dans ma base pour authentifier l'administrateur si il sont conforme donc donner l'autorisation si non la refuser.
Merci d'avance pour votre aide.

3 réponses

jjsteing Messages postés 1669 Date d'inscription vendredi 11 mai 2007 Statut Contributeur Dernière intervention 21 mai 2012 181
11 août 2009 à 08:18
bonjour,

tout d abord, il faut bien sur que tu ais un champs dans ta base de donné contenant le groupe..

ex table 'Login' contenant 'id', 'user'; 'psw', 'Grp'

donc, quand tu vérifie dans ta bd si l utilisateur a taper le bon mot de passe, tu peux aussi remonter le champs 'Grp'. auquel tu aura mis ce que tu veux pour authentifié ce groupe en tant qu admin, par ex, tu peux avoir mis dans le champs 'Grp' 99 ou Adm, ou 1, enfin, un quelquechose qui te permettra de tester ce champs dans ton php ;) et ainsi savoir si l utilisateur fait parti de tel ou tel groupe ;)
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 à 10:24
merci, cette table je l'ai deja dans ma base de donnees, le probleme c just prendre les donnees inserer par le user et les tester si il sont semblable a ceux dans la base avant de donner l'autorisation.

J'ai fais un code pour cela qui me semble approprie mais une fois entree les donnees quand j'appui sur ok il m'invite toujours a faire entrer encore les donnees c'est a dire username et password.
Voici le 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";
?>
0
jjsteing Messages postés 1669 Date d'inscription vendredi 11 mai 2007 Statut Contributeur Dernière intervention 21 mai 2012 181
11 août 2009 à 10:29
donc, si tu as un champ 'Grp' par ex :
au lieu de :
list($valid_user) = mysql_fetch_row($result);

met :
$User = mysql_fetch_array($result);

et $User["Grp"] contiendra la valeur de 'Grp' de ta bd, et donc tu peux faire quelquechose comme :

if ($User["Grp"] == "Admin"){
echo "vous etes administrateur";
}
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:38
Merci je l'ai fait mais il y'a aucun changement j'ai l'impression qu'il est insenssible au donnees que j'insere, car meme quand s'insere un username different et un password different c'est la meme chose il m'invite chaque fois a inserer encore un username et password sans aucun message d'erreur.
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:54
merci bcp pour votre aide, j'ai du reorganise le code comme on me la suggere et voila le nouveau 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 the query didn't work at all (which shouldn't happen), or ran but
// didn't find a match for the user name & password, $valid_user will
// not be set to anything. if this is so, have the user try again.
if (!$result || empty($valid_user)) {

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