Hylvenir
Messages postés364Date d'inscriptionmercredi 11 février 2004StatutMembreDernière intervention 5 octobre 2006
-
18 déc. 2005 à 18:06
Hylvenir
Messages postés364Date d'inscriptionmercredi 11 février 2004StatutMembreDernière intervention 5 octobre 2006
-
19 déc. 2005 à 21:59
Bonjour,
je souhaiterais renseigné la variable PHP_AUTH_USER et $_SERVER
mais sans passer par le boite de dialogue du navigateur.
ex:
<?php
header( 'WWW-Authenticate: Basic' );
// ?
print_r( $_SERVER );
?>
Ce code ouvre fait ouvrir une boite de dialogue du navigateur, ensuite
la variable globale $_SERVER contient bien la variable PHP_AUTH_USER.
Comment puis-je avoir le même résultat sans passer par la boite de dialogue ?
Les buts finaux étant :
1. d'avoir directement ce nom d'utilisateur dans le log Apache
2. d'utiliser ma base de données pour les mots de passe (login/password saisis dans une page dédié).
3. éventuellement pouvoir déconnecter automatiquement l'utilisateur sans qu'il y ait besoin de fermer le navigateur.
Les objetifs 1 et 2 sont déjà fait par une autre méthode j'aimerais surtout avec ce login dans le log access_log d'Apache.
kankrelune
Messages postés1293Date d'inscriptionmardi 9 novembre 2004StatutMembreDernière intervention21 mai 2015 19 déc. 2005 à 20:08
Soit j'ais pas compris la question soit comme Coucou747 je vois pas où est le problème... tu fais un fichier passwd.php dans lequel tu fais deux define et que tu met dans un répertoire protégé par un htaccess deny from all...
et tu fais un fichier auth.php dans lequel tu met...
include_once('rep_protege/passwd.php');
if(MON_USER != '' || MON_PASSWD != ''){
if (!isset($_SERVER['PHP_AUTH_USER'])) {
header('WWW-Authenticate: Basic realm="Authentification"');
header('HTTP/1.0 401 Unauthorized');
echo 'You can not access to this page !';
exit();
} else {
if(MON_USER != '' && $_SERVER['PHP_AUTH_USER'] != MON_USER){
header('HTTP/1.0 401 Unauthorized');
echo 'You can not access to this page !';
exit();
}
if(MON_PASSWD != md5($_SERVER['PHP_AUTH_PW'])){
header('HTTP/1.0 401 Unauthorized');
echo 'You can not access to this page !';
exit();
}
}
}
et tu appel cette page par un include dans toutes les pages à protéger... le haschage par md5 (dernier if) étant facultatif... .. .
après tu peux remplacer les define par une requete sql c'est pas compliqué... .. .
Tu veux que le membre puisse se déconnecter sans fermer le navigateur mais ça c'est pas possible via les variables serveur PHP_AUTH_USER et PHP_AUTH_PW... donc soit tu accepte cette technique d'authentification avec ces avantage et ces inconvénients soit tu te tourne vers un espace membre traditionnel qui utilise les variables de session... .. .
@ tchaOo°
Vous n’avez pas trouvé la réponse que vous recherchez ?
Hylvenir
Messages postés364Date d'inscriptionmercredi 11 février 2004StatutMembreDernière intervention 5 octobre 20062 19 déc. 2005 à 20:50
En effet, le problème est peut être mal posé.
lors d'une identification par .htaccess simple, c'est le navigateur qui
est en charge d'ouvrir une boîte de dialogue pour saisir un login/mot
de passe. Une fois identifié par cette méthode, le login est présent
dans le fichier access_log d'Apache (avec le paramètrage par défaut).
Je voudrais ne pas avoir recours à cette boite de dialogue du
navigateur mais avoir un moyen de renseigné ce login dans le log Apache.
Par exemple le code de kankrelune, se contente de la boite de dialogue
du navigateur ( via header('WWW-Authenticate: Basic
realm="Authentification"'); )
Mais sinon, l'objectif simple c'est d'avoir un identifiant par
utilisateur dans le log Apache (sans avoir à passer l'id dans l'url à
chaque fois genre index.php?id=123 )