Bonjour,
voila, je suis en train de faire un site avec un grand nombre de pages
web, dont CERTAINES ne doivent etre accessible qu'après une
authentification.
Après de longues heures d'étude du probleme j'ai trouvé (et un peu pompé
après avoir compris) un bout de code tout à fait classique pour faire
ca. Schématiquement le voici :
<CODE>
$token = false;
if (isset($PHP_AUTH_USER) && isset($PHP_AUTH_PW) )
{
PARSE DU FICHIER (methode .htaccess)
if(!token)
{
envoie du header d'authentification
blablabla;
}
else
{
pas d'acces;
}
</CODE>
biensûr le serveur web est bien paramètré (en ce qui concerne le
AllowOverride et tout ca), et les $PHP_AUTH_xx ont été remplacés par des
$_SERVER['$PHP_AUTH_xx'] pour essayer aussi.
Bon inutile de dire que ca ne marche pas, la fenètre de login apparait
sans cesse, que je rentre les bonnes infos d'autentification ou pas.
Donc j'ai creusé un peu.
Après quelques poignées de cheveux arrachées je me suis appercu que le
probleme ne venait sans doute pas du parsage du fichier de mot de passe,
mais du :
if (isset($PHP_AUTH_USER) && isset($PHP_AUTH_PW) )
En effet j'y ai collé un else et mis le header(''WWW-Authenticate:
Basic...') dedans (je l'ai enlevé du [ if(!token) ] et l'effet est
EXACTEMENT le même, fenetre toujours présente quelle que soient les
infos entrées.
J'en conclue donc que jamais on ne rentre dans le premier if, d'ou ma
question très simple: Y a t'il une raison simple pour que les variables
globales ne soient jamais "set" ?
Il y a peut-être aussi ceci à prendre en compte : <cit.> Les fonctions d'identification HTTP de PHP ne sont disponibles que si PHP est exécuté comme module Apache </cit.>
-- Olivier Miakinen Troll du plus sage chez les conviviaux : le nouveau venu, avec son clan, s'infiltre dans les groupes de nouvelles. (3 c.)
[...] les $PHP_AUTH_xx ont été remplacés par des
$_SERVER['$PHP_AUTH_xx'] pour essayer aussi.
Il y a peut-être aussi ceci à prendre en compte :
<cit.>
Les fonctions d'identification HTTP de PHP ne sont disponibles que si
PHP est exécuté comme module Apache
</cit.>
--
Olivier Miakinen
Troll du plus sage chez les conviviaux : le nouveau venu, avec
son clan, s'infiltre dans les groupes de nouvelles. (3 c.)
Il y a peut-être aussi ceci à prendre en compte : <cit.> Les fonctions d'identification HTTP de PHP ne sont disponibles que si PHP est exécuté comme module Apache </cit.>
-- Olivier Miakinen Troll du plus sage chez les conviviaux : le nouveau venu, avec son clan, s'infiltre dans les groupes de nouvelles. (3 c.)