minimouse Posté 27 Mars 2007 Posté 27 Mars 2007 bonsoir tout le monde, j'ai réussi à mettre un login et un mot de passe sur une page. <?php if ( ($PHP_AUTH_USER=="login") and ($PHP_AUTH_PW=="motdepasse") ) {$auth=true;} else {$auth=false;} if (!$auth) { header( 'WWW-Authenticate: Basic realm="Compte gestionnaire"' ); header( 'HTTP/1.0 401 Unauthorized' ); print "<html><head><title> ACCES NON AUTORISE</title></head><body>"; print "<center>Authentification nécessaire</center></html>"; exit; } else { // ici le code de la page protégée complète entre <html> et </html> } ?> Quand je travaille en local tout va bien et sur le site distant rien ne va plus... pourquoi ????que faut-il que je fasse pour que cela fonctionne ? Merci pour votre aide
Spark Posté 27 Mars 2007 Posté 27 Mars 2007 (modifié) Salut, Avec ça je pense que ça fonctionnera mieux (chez moi en local ton code ne marche pas sans ça) : if ( ($_SERVER['PHP_AUTH_USER']=="login") and ($_SERVER['PHP_AUTH_PW']=="motdepasse") ) Modifié 27 Mars 2007 par Spark
minimouse Posté 28 Mars 2007 Auteur Posté 28 Mars 2007 Merci Spark, j'ai remplacé if ( (... par ton code et ça ne fonctionne pas... mais je viens de me rendre compte qu'à ce niveau : else { // ici le code de la page protégée complète entre <html> et </html> } je n'ai rien rempli : sinon qu'est-ce que je dois mettre comme code entre <html> et </html> ???? je pense que le problème vient de là également Merci de me dépatouiller !!!
Spark Posté 28 Mars 2007 Posté 28 Mars 2007 (modifié) Note: Il ne faut rien envoyer au navigateur avant l'utilisation de la fonctionn header() : espaces, lignes blanches, HTML ou '\n', '\r', etc.. L'envoi de caractères avant les entêtes provoque une erreur d'analyse lors de l'exécution du script. Je ne vois pas pourquoi ... mais j'ai lu ça, le problème ne viens pas de là j'en suis presque sur. Je suis en train de chercher. EDIT : je pense qu'il parle d'avant "<?php" J'arrête de cherché pour aujourd'hui. Sécurisé un seul fichier peut être intéressant, mais le faire pour un dossier entier serait plus simple, surtout avec 1&1 qui permet de le faire dans l'interface de gestion. Modifié 28 Mars 2007 par Spark
minimouse Posté 28 Mars 2007 Auteur Posté 28 Mars 2007 je te remercie Spark de "chercher" donc à plus en espérant que tu auras trouvé quelque chose (ce serait vraiment bien !!!)
Remi Posté 29 Mars 2007 Posté 29 Mars 2007 (modifié) Certainement rien à voir avec la présence de lignes vides avant un header (quand on a une ligne vide, l'interpréteur PHP commence la construction de la page et envoie les headers, donc si on fait un header derrirère on a "headers already sent"... c'est logique). Le problème vient sans doute du fait que la récupération des paramètres de login peut varier suivant les serveurs. Par exemple, sur certaines configurations, il faut utiliser $_server[REMOTE_USER] Sinon entre les balises <html>et </html>, et bien tu mets le contenu de ta page à protéger. Modifié 29 Mars 2007 par Remi
minimouse Posté 29 Mars 2007 Auteur Posté 29 Mars 2007 Merci pour ta réponse Rémi, mais avec $_server [REMOTE_USER], je dois le placer ou et comment ? peux-tu m'écrire le noveau code ?
Remi Posté 29 Mars 2007 Posté 29 Mars 2007 (modifié) REMOTE_USER est à tester en lieu et place de PHP_AUTH_USER Et puis pour sécuriser un poil la chose, il est certainement de bon ton de mettre : if ( strip_tags($_SERVER['PHP_AUTH_USER']) == .... && strip_tags($_SERVER['PHP_AUTH_PW']) == ...) Modifié 29 Mars 2007 par Remi
Leonick Posté 19 Avril 2007 Posté 19 Avril 2007 En plus sur certains serveurs, genre les mutu OVH, on ne peut récupérer PHP_AUTH_PW
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant