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

Langage PHP Discussion :

Redirection après ouverture de session


Sujet :

Langage PHP

  1. #1
    Membre actif Avatar de Général03
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    848
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2006
    Messages : 848
    Points : 283
    Points
    283
    Par défaut Redirection après ouverture de session
    Bonjour,

    j'utilise un page qui à l'exécution vérifie si mon utilisateur (login et mot de passe stockés en session) est toujours le même. Pour cela j'ouvre ma session puis je fais les tests, et en fonction du résultat je choisi de lui donner l'accès à cette page ou de l'envoyer sur une page d'authentification. C'est là le problème, puisque l'ouverture de ma session déclenche l'envoi d'une entête HTTP et ainsi je ne peux pas faire ma redirection car l'entête est déjà parti !!!
    mapage.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?php
    session_start();
     
    //Mes tests
     
    header("Location: $resultat");
    /*ERREUR : Firefox a détecté que le serveur redirige la demande pour cette adresse d'une manière qui n'aboutira pas.*/
    ...?>
    Comment puis je contourner le problème ?

    Merci de votre aide
    Mes contributions phares en dev : www.rigaudie.fr

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    le session_start() ne déclenche pas l'envoi des en-tête, ton problème vient d'autre part.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre actif Avatar de Général03
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    848
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2006
    Messages : 848
    Points : 283
    Points
    283
    Par défaut
    a bon, il me semblait le contraire pourtant !! en lisant ceci http://php.developpez.com/faq/index....s_already_sent j'ai vu
    ...Tout ceci ne doit pas être fait avant l'utilisation de fonctions qui modifient les en-têtes comme "header" ou "session_start" entre autres.
    Mon fichier contient
    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    <?php
    session_start();
     
    require_once("db-class.php");
    $identification = new db();
     
        function authentification()
        {
           $realm="Authentification du serveur de donnée";
           Header("WWW-Authenticate: Basic  realm=Authentification du serveur de donnée");
           Header("HTTP/1.0  401  Unauthorized");  
           echo "Une connexion avec un identifiant est n&eacute;c&eacute;ssaire pour afficher la page ";
           exit;
        }
     
        if ((isset($_SESSION['LOGIN'])) && (!empty($_SESSION['LOGIN'])))
        {
            //les cookies existent, vérification de l'identité
            $resultat = $identification->requeteSelect($_SESSION['LOGIN'], $_SESSION['MDP']);
     
        }
        else
        {
            //les cookies n'existent pas
            if( !isset($_SERVER['PHP_AUTH_USER']) && !isset($_SERVER['PHP_AUTH_PW']) ) 
            {
                //les identifiant HTML n'existent pas, affichage header et vérification de l'identité
               authentification();
     
               $resultat = $identification->requeteSelect($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW']);
     
            }
            else 
            {
                //les identifiants existent, vérification de l'identité
     
                $resultat = $identification->requeteSelect($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW']);
     
            }
        }
     
        header("Location: $resultat");
    Mes contributions phares en dev : www.rigaudie.fr

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Oui, session_start() modifie les en-tête mais ne les envoie pas.

    Dans ton cas, tu as un echo qui se produit avant la redirection.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre actif Avatar de Général03
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    848
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2006
    Messages : 848
    Points : 283
    Points
    283
    Par défaut
    Même en enlevant le echo j'ai toujours le message de firefox
    Boucle de redirection

    Firefox a détecté que le serveur redirige la demande pour cette adresse d'une manière qui n'aboutira pas.

    Le navigateur a arrêté d'attendre une réponse du site. Le site crée une redirection de telle sorte que la requête ne peut jamais aboutir.

    * Avez-vous désactivé ou bloqué les cookies nécessaires pour ce site ?
    * NOTE : Si le problème n'est pas résolu en acceptant les cookies de ce site, il s'agit probablement d'un problème de configuration du serveur et non de votre ordinateur.
    Si je met en commentaire mon header et ben la ma page s'affiche (mais du coup je ne fais pas la redirection voulu).
    J'ai regardé dans ma fonction "requeteSelect" s'il n'y avait pas de echo mais rien. Dans celle-ci, je crée 2 variables sessions (avec un "session_start()") et mon traitement.
    Je ne vois pas se qui cloche ?
    Mes contributions phares en dev : www.rigaudie.fr

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    C'est bien ton erreur n'a pas de rapport avec les problème d'en-tête envoyés au mauvais moment.
    On aurait evité de tourner en rond si tu avais precisé l'erreur rencontré

    As-tu controlé ce que valait $resultat ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #7
    Membre actif Avatar de Général03
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    848
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2006
    Messages : 848
    Points : 283
    Points
    283
    Par défaut
    Oui, $resultat me retourne soit index.php soit donnees.php
    Mes contributions phares en dev : www.rigaudie.fr

  8. #8
    Membre actif Avatar de Général03
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    848
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2006
    Messages : 848
    Points : 283
    Points
    283
    Par défaut
    Le post suivant résout le problème http://www.developpez.net/forums/d61...ction-firefox/ mais j'aimerais vraiment comprendre pourquoi j'ai cette boucle de redirection. Surement une erreur de codage, donc autant corriger la source de l'erreur !
    Voilà se que j'ai rajouter à la suite de mon script
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if($resultat == "index.php")
        {
        header("Location: $resultat");
        }
    Ainsi, je fais une redirection uniquement si $résultat vaut "index.php" (sans erreur de boucle de redirection).
    Mais je n'ai pas bien saisi se que c'était ces boucles de redirection, quelqu'un pourrait m'en dire plus ?

    Merci
    Mes contributions phares en dev : www.rigaudie.fr

  9. #9
    Membre expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Points : 3 390
    Points
    3 390
    Par défaut
    Bonsoir,

    Boucle de redirection: C que tu boucles sur la même page non!

    D'après le code du lien il y a modification du nbr de boucle possible pour pouvoir ouvrir un nbr de fois la même page mail avec FireFox.

    Toi, le pb est que tu commences un header pour envoyer ensuite sur la même page d'ou la boucle possible. car c un cas possible dans ton algo ...

    Enfin dans ton if tu header vers une autre page qui n'est pas commencée par authentification donc pas de boucle possible
    Meuuh en AI à l'INRA
    Domaines: {java, php, js, jquery}{hibernate, doctrine}{MyLib, symfony, Zend}
    fait gagner du temps à ceux qui aident , donc un message avec la balise résolu laisse plus de temps pour résoudre d'autres problèmes (balise à cliquer en bas de l'écran)

  10. #10
    Membre actif Avatar de Général03
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    848
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2006
    Messages : 848
    Points : 283
    Points
    283
    Par défaut
    En effet, mon problème est que j'essayais d'afficher la page dans laquelle je faisais le test !! Donc mon dernier if permet de faire un "header" uniquement quand je souhaite diriger vers une autre page. Et nickel, ça fonctionne

    Merci et bonne soirée
    Mes contributions phares en dev : www.rigaudie.fr

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

Discussions similaires

  1. Écran noir après ouverture de session - [Windows 8 Pro]
    Par Julieen96 dans le forum Windows 8
    Réponses: 2
    Dernier message: 24/12/2012, 12h52
  2. Déconnexion automatique après ouverture de session!
    Par js8bleu dans le forum Windows XP
    Réponses: 1
    Dernier message: 27/04/2010, 12h31
  3. Réponses: 0
    Dernier message: 15/03/2010, 16h15
  4. Temps écoulé après ouverture de session windows
    Par kasjacques dans le forum API, COM et SDKs
    Réponses: 3
    Dernier message: 02/12/2005, 08h49
  5. Probleme de redirection apres fermeture de session
    Par soufienne dans le forum ASP
    Réponses: 3
    Dernier message: 08/04/2004, 10h52

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