IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Apache Discussion :

Définir les variables $_SERVER


Sujet :

Apache

  1. #1
    Membre à l'essai
    Homme Profil pro
    Spécialiste projets aéronautique
    Inscrit en
    Octobre 2006
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Spécialiste projets aéronautique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2006
    Messages : 21
    Points : 18
    Points
    18
    Par défaut Définir les variables $_SERVER
    Bonjour,

    je débute dans le vaste domaine de apache, php mysql et linux.
    je pense avoir bien résumé mon niveau.....

    Maintenant voici mon problème :
    depuis quelques semaines j'essais de trouver une solution pour pouvoir utiliser l'authentification PHP sur le petit serveur que j'ai monté.
    j'explique : j'ai créé une page en php où l'utilisateur distant peut s'identifier avec son login et son mot de passe, et ainsi acceder à des pages php "restreintes".
    maintenant il y a aussi sur le serveurs des dossiers disponibles mais restreints eux-aussi qui nécessitent une authentification HTTP ou PHP (je ne sais pas laquelle c'est).

    berf, cette authentification est définie dans mon fichier .conf du serveur avec ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    <Location /test>
    Options +Indexes +Includes +FollowSymLinks
    AuthType Basic
    AuthName "ACCES PRIVE"
    AuthMySQLHost hote_defini
    AuthMySQLDB ma_base
    AuthMySQLUserTable ma_table
    AuthMySQLEnable On
    AuthMySQLUser user
    AuthMySQLPassword le_mdp_de_table
    AuthMySQLNameField user_name
    AuthMySQLPasswordField user_passwd
    AuthMySQLNoPasswd Off
    AuthMySQLPwEncryption none
    AuthMySQLGroupTable user_info
    AuthMySQLGroupField user_group
    AuthMySQLAuthoritative On
    <Limit GET POST>
    require valid-user
    # require group admin user
    </limit>
    </Location>
    mais le souci est que même si l'utilisateur s'est identifié sur le serveur, il a accès aux pages restreintes, mais dès qu'il veut aller dans un dossier restreint, le popup du serveur apparait et lui demande une authentification.

    après quelques recherches sur le net, mon problème semble être dans la définition des variables $_SERVER["PHP_AUTH_USER"], $_SERVER["PHP_AUTH_PW"] et $SERVER["AUTH_TYPE"].

    j'ai essayé en utilisant :
    $_SERVER["PHP_AUTH_USER"] = $_POST['user_name']
    putenv($_SERVER["PHP_AUTH_USER"] = $_POST['user_name'])
    $_SERVER["PHP_AUTH_USER"] = $_SESSION['user_name']
    mais rien y fait, je n'y arrive pas.

    je precise que les variables de session fonctionnent bien et sont bien transmises de pages en pages.

    j'ai lu également que cela pouvait provenir du register_globals qui serait sur off, mais ne voulant pas faire de connerie et planter ce que j'ai reussi à faire fonctionner, je préfère demander un coup de main....


    D'avance un grand merci à ceux qui prendront un peu de temps pour venir à mon aide.......

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 777
    Points
    17 777
    Par défaut
    Les variables $_SERVER ne sont pas des variables de session. Seules les variables de session ont une certaine persistance en PHP. En effet, les variables $_SERVER, comme toutes les autres (à l'exception de celles d'une session donc), sont détruites et recrées avec leur valeur d'origine (par rapport au protocole HTTP ou au serveur) à chaque appel d'un script. La modification des variables $_SERVER n'affectent pas Apache lui-même, seulement le script courant : c'est à "sens unique".

  3. #3
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    Il y a 2 types d'authentification dans ton cas :
    • L'authentification HTTP basique : c'est la pop-up qui te demande un login et un mot de passe. Cette authentification passe par l'utilisation d'en-têtes HTTP spécifiques (cf. http://www.themanualpage.org/http/http_auth_basic.php). Quand un navigateur envoie ces en-têtes (parce que le serveur les demande), tu récupère effectivement des valeurs pour $_SERVER["PHP_AUTH_USER"] (cf. http://www.php.net/manual/fr/features.http-auth.php).
    • "L'authentification PHP" : c'est ton implémentation avec ta page HTML qui présente un joli formulaire, etc.

    Comme ça, là, sans rien faire, les 2 types d'authentification sont incompatibles. Ce que tu peux éventuellement faire c'est coder ton authentification PHP pour authentifier l'utilisateur si d'aventure le navigateur fournit les en-têtes d'authentification HTTP basique. Mais il y a 2 pbs :
    1. Si les pages protégées par authentification PHP ne sont pas dans une sous-arborescences des pages protégées par authentification HTTP (ce qui est vraisemblablement le cas), les en-têtes HTTP ne seront pas transmis aux pages PHP.
    2. Si ça marche, l'authentification croisée ne peut marcher quand dans le sens authentification HTTP -> authentification PHP car pour l'authentification HTTP, c'est le navigateur qui doit envoyer systématiquement le bon en-tête et on ne peut pas les forcer pour lui.


    Le coeur du pb c'est vraiment l'authentification HTTP qui demande une initiative de la part du navigateur. Si tu veux pouvoir passer d'une série de pages protégées à une autre, il faut trouver un autre moyen d'authentification que HTTP basic. Bref, je ne suis pas sûr qu'il existe une solution simple convenable à ton pb

  4. #4
    Membre à l'essai
    Homme Profil pro
    Spécialiste projets aéronautique
    Inscrit en
    Octobre 2006
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Spécialiste projets aéronautique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2006
    Messages : 21
    Points : 18
    Points
    18
    Par défaut
    merci a vous deux pour les reponses, meme si ce n'est pas celles que j'esperais.

    je suis bien ennuyé, car cela veut dire que soit ma page d'identification ne sert a rien si je veux utiliser l'authentification HTTP avec le popup, soit les dossiers ne sont pas protégés si j'utilise mon identification personnalisée.

    et c'est dommage.

    merci encore pour vos reponses

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [PHP 5.3] PHP en cli : ou définir les variables d'environnement ?
    Par het44 dans le forum Langage
    Réponses: 2
    Dernier message: 08/07/2013, 09h00
  2. Réponses: 8
    Dernier message: 05/10/2009, 15h47
  3. Comment définir une variable connu par tous les évènements
    Par whitespirit dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 17/06/2008, 14h55
  4. [Sécurité] protéger les variables $_SERVER
    Par grunk dans le forum Langage
    Réponses: 5
    Dernier message: 11/03/2008, 18h03
  5. Réponses: 7
    Dernier message: 07/09/2004, 14h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo