Authentification en PHP. [Résolu]

Jouban 14 Messages postés mardi 20 juillet 2004Date d'inscription 10 août 2004 Dernière intervention - 20 juil. 2004 à 17:23 - Dernière réponse : cs_pyranhaz 236 Messages postés mardi 13 mai 2003Date d'inscription 13 décembre 2004 Dernière intervention
- 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
Afficher la suite 

Votre réponse

6 réponses

Meilleure réponse
Jouban 14 Messages postés mardi 20 juillet 2004Date d'inscription 10 août 2004 Dernière intervention - 22 juil. 2004 à 10:57
3
Merci
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

Merci Jouban 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 97 internautes ce mois-ci

Commenter la réponse de Jouban
arnal69130 445 Messages postés lundi 17 février 2003Date d'inscription 22 mars 2007 Dernière intervention - 20 juil. 2004 à 17:34
0
Merci
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
Commenter la réponse de arnal69130
Jouban 14 Messages postés mardi 20 juillet 2004Date d'inscription 10 août 2004 Dernière intervention - 21 juil. 2004 à 10:05
0
Merci
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
Commenter la réponse de Jouban
WhiteDwarf 510 Messages postés samedi 29 décembre 2001Date d'inscription 23 mai 2008 Dernière intervention - 21 juil. 2004 à 12:04
0
Merci
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
----------------------
Commenter la réponse de WhiteDwarf
WhiteDwarf 510 Messages postés samedi 29 décembre 2001Date d'inscription 23 mai 2008 Dernière intervention - 21 juil. 2004 à 12:10
0
Merci
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
----------------------
Commenter la réponse de WhiteDwarf
cs_pyranhaz 236 Messages postés mardi 13 mai 2003Date d'inscription 13 décembre 2004 Dernière intervention - 1 nov. 2004 à 03:53
0
Merci
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 !
Commenter la réponse de cs_pyranhaz

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.