destroyedlolo
jeudi 2 août 2007 à 10:24
J'imagine que tes utilisateurs sont dans une base de donnees, dans ce cas, tu peux regarder mod_dbd d'apache 2.2 ... mais quant une nouvelle version d'apache sortira car la version actuelle est completement buggee et ne fonctionne pas
Pour palier a ce probleme, je fais l'authentification directement en PHP :
CODE
function Authentification($usr, $func=false, $realm='Mais qui etes vous'){
global $_SERVER;
if(!$usr->ok() || // L'utilisateur n'existe pas
!$usr->verifPasswd($_SERVER['PHP_AUTH_PW']) || // Le mot de passe ne correspond pas
($func && !$usr->$func()) // L'utilisateur n'a pas la bonne capacite
){
$usr->invalide(); // Pour etre sur que l'utilisateur ne peut rien faire.
header("WWW-Authenticate: Basic realm=\"$realm\"");
header('HTTP/1.0 401 Unauthorized');
die('*F* Vous devez vous authentifier pour acceder a cette page.');
}
Bon, faut adapter et je ne vais pas sortir tout mon code (trop long

) mais en resume, $usr est une classe qui est initialisee d'apres la valeur de $_SERVER['PHP_AUTH_USER']. Elle contient plusieurs methodes pour qualifier l'utilisateur et en particulier,
CODE
function verifPasswd( $pw ){
return(crypt($pw, $this->getPasswd()) == $this->getPasswd());
}
quio verifie que le mot de passe fourni par le visiteur correspond bien a celui stoque dans la database (qui est crypte), recupere par la methode
getPasswd().
A nouveau, je ne rentre pas dans les details, c'est juste pour te donner une idee comment ca fonctionne
Lolo