Authentification en PHP.

Résolu
Jouban Messages postés 14 Date d'inscription mardi 20 juillet 2004 Statut Membre Dernière intervention 10 août 2004 - 20 juil. 2004 à 17:23
cs_pyranhaz Messages postés 236 Date d'inscription mardi 13 mai 2003 Statut Membre Dernière intervention 13 décembre 2004 - 1 nov. 2004 à 03:53
Bonjour à tous!

Je souhaite faire une procédure d'authentification pour certaines pages de mon site.
J'ai un fichier dans lequel je réalise cette authentification, et je l'appelle au début de chaque page que je veux restreindre à certaines personnes.
J'y ai mis pour l'instant les mots de passe en dur, c'est pour voir le fonctionnement. J'utiliserai après soit un fichier, soit une BD.
Voici le code:

*******
<?php
$user = "toto";
$pwd = "bidon";

function auth(){
$realm="Fenêtre d'authentification";

Header("WWW-Authenticate: Basic realm='".$realm."'");
Header("HTTP/1.0 401 Unauthorized");

echo "Vous ne pouvez accéder à cette page";
exit;
}

if(!isset($PHP_AUTH_USER) && !isset($PHP_AUTH_PW)) {
auth();
}
else {
if($PHP_AUTH_USER==$user && $PHP_AUTH_PW==$pwd) {
// la suite du script sera exécutée
echo "Bienvenue sur ce site";
}
else{
// rappel de la fonction d'identification
auth();
}
}
?>
*******

Le problème que je rencontre, c'est qu'il ne reconnaît pas les variables $PHP_AUTH_USER et $PHP_AUTH_PW. En effet, lors de l'exécution, le navigateur m'affiche à chaque fois l'erreur 401, et ne rentre jamais dans la bonne boucle, comme si ces variables n'existaient pas.
Pourtant, d'après ce que j'ai pu lire et comprendre, c'est qu'elles sont automatiquement déclarées et affectées dès que l'on remplit les champs 'login' et 'mot de passe' dans la fenêtre d'authentification.
Aurais-je mal compris ou faut-il quand même les déclarer ? et dans ce cas, quelle est la manière de procéder ?
Comment faire pour qu'elles soient prises en compte?
Merci de votre aide.
Bonne fin de journée.

Jouban

6 réponses

Jouban Messages postés 14 Date d'inscription mardi 20 juillet 2004 Statut Membre Dernière intervention 10 août 2004
22 juil. 2004 à 10:57
Bonjour!

Merci à arnal69130 et WhiteDwarf pour vos réponses.
La première chose, c'est que je ne passais pas bien mes paramètres.
Et puis la deuxième, c'est qu'au lieu d'appeler $PHP_AUTH_USER et $PHP_AUTH_PW, il fallait que j'appelle $_SERVER['PHP_AUTH_USER'] et $_SERVER['PHP_AUTH_PW'].
Et là, ça marche !!!
Merci et bonne journée.

Jouban
3
arnal69130 Messages postés 445 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 22 mars 2007 2
20 juil. 2004 à 17:34
Il me semble que ces variables sont renseignées lorsque tu utilises une identification par .htaccess, elle viennent de la fenêtre

Si ta variable est $user, utilise $user :
if(empty($user) || empty($pwd) )


En espérant t'avoir apporté un élément de réponse,
Arnaud
0
Jouban Messages postés 14 Date d'inscription mardi 20 juillet 2004 Statut Membre Dernière intervention 10 août 2004
21 juil. 2004 à 10:05
Salut Arnaud!

Merci pour ta réponse.
Le problème, si je passe par $user et $pwd, en les précisant en haut du script, c'est que je n'ai plus du tout la fenêtre d'authentification. La page que je veux protéger s'affiche directement puisque $user et $pwd sont déjà renseignés.

Sinon, comment ça fonctionne .htaccess?
Bonne journée.

Jouban
0
WhiteDwarf Messages postés 510 Date d'inscription samedi 29 décembre 2001 Statut Membre Dernière intervention 23 mai 2008
21 juil. 2004 à 12:04
Je ne crois pas qu'il faille enregistrer les variables dès le début, dans ton code tu met

$user =  "toto"; 
$pwd = "bidon"; 


enlève ces deux lignes et au lieu de mettre

} 
else { if($PHP_AUTH_USER$user  && $PHP_AUTH_PW  $pwd ) { 
// la suite du script sera exécutée 
echo "Bienvenue sur ce site"; 
} 


tu met :

} 
else { if($PHP_AUTH_USER toto  && $PHP_AUTH_PWbidon) { 
// la suite du script sera exécutée 
echo "Bienvenue sur ce site"; 
} 


et ensuite tu pourra utiliser le code d'arnal69130 et vu que les variable ne seront pas déclarées au début tu pourras les utiliser par la suite, sans qu'elles contiennent les login et mot de pass
----------------------
[http://www.laxis.net [Laxis]]WhiteDwarf
----------------------
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
WhiteDwarf Messages postés 510 Date d'inscription samedi 29 décembre 2001 Statut Membre Dernière intervention 23 mai 2008
21 juil. 2004 à 12:10
pardon je me suis trompé, il faut que tu rajoute des guillemets:

} 
else { 
if($PHP_AUTH_USER= = "toto"  && $PHP_AUTH_PW =="bidon") { 
// la suite du script sera exécutée 
echo "Bienvenue sur ce site"; 
} 

----------------------
[http://www.laxis.fr.st [Laxis]]WhiteDwarf
----------------------
0
cs_pyranhaz Messages postés 236 Date d'inscription mardi 13 mai 2003 Statut Membre Dernière intervention 13 décembre 2004
1 nov. 2004 à 03:53
intéressant, mais peut-on laisser .htaccess et demander un htpasswd.php pour pouvoir gérer ce dernier avec une base mysql ???

si on enlève le .htaccess pour metre par exemple htaccess.php le contenu du répertoire n'est plus protégé (zip, images, etc.) mais juste les pages... et encore ils doivent avoir tous le code...

donc, peut-on laisser .htaccess mais avoir un htpasswd.php gérer avec MySQL et fonctionnel ???

tout ce que j'ai fais jusqu'ici ne fonctionne pas... comme si .htaccess ne pouvait lire le résultat de php...

même si avec un echo ca revient en clair la même chose que:
user:mchfe74362635

alors je vois pas pourquoi ca marche pas :-(

Merci !
0
Rejoignez-nous