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 :

Problème session en fonction de l'emplacement de session_start()


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de Dionyzos
    Homme Profil pro
    Développeur & Designer Web
    Inscrit en
    Février 2004
    Messages
    134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur & Designer Web

    Informations forums :
    Inscription : Février 2004
    Messages : 134
    Par défaut Problème session en fonction de l'emplacement de session_start()
    Bonjour,

    J'ai un problème étrange avec la gestion des sessions :

    En fonction de l'emplacement de la fonction session_start(), les sessions sont bien enregistrées ou pas.

    Voici ma structure et mon code (simplifié) :

    index.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <?php
    require 'includes/main.php';
    [...]
    ?>

    includes/main.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?php
    require 'fonction.php';
     
    $user = verifAuthentification();
    [...]
    ?>

    includes/fonction.php:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?php
    session_start();
     
    function verifAuthentification($login, $pass)
    {
    [...]
        $_SESSION['login'] = $login;
        $_SESSION['pass'] = $pass;
    [...]
    }
    [...]
    ?>
    Dans ce cas de figure tout fonctionne sur mon PC en local via WAMP.

    Par contre si je déplace le session_start() au début du includes/main.php...
    includes/main.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?php
    session_start();
    require 'fonction.php';
     
    $user = verifAuthentification();
    [...]
    ?>
    includes/fonction.php:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?php
    function verifAuthentification($sLogin = null, $sPassword = null)
    {
    [...]
        $_SESSION['login']    = $sLogin;
        $_SESSION['password'] = $sPassword;
    [...]
    }
    [...]
    ?>
    ...les infos de sessions ne sont plus enregistrées

    Pourtant la fonction session_start() retour TRUE dans tous les cas !
    Et je n'ai aucun code envoyé avant <?php (pas de caractere ou espace...)
    Tous les fichiers sont encodés en UTF8 sans BOM.
    Je n'ai aucune erreur dans les logs PHP.

    J'aimerais justement que le session_start() soit dans le main.php et plus dans le fichier de fonctions, pour des raisons d'organisation de code, et aussi parce que cela génère une erreur sur mon hébergeur (O2Switch).

    Qq'un aurait-il une idée ou une piste pour régler ce problème ?
    Merci.

  2. #2
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Pour autant qu'il m'en souvienne, l'emplacement du session_start n'a pas d'importance tant qu'il se trouve avant toute instruction (code hors balises <?php ?>, echo, header...) et avant l'utilisation des variables de session.

    Tu as essayé de le mettre directement au début de ton index.php ?
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2011
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2011
    Messages : 36
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $user = verifAuthentification();
    [...]
    function verifAuthentification($sLogin = null, $sPassword = null)
    {
    [...]
        $_SESSION['login']    = $sLogin;
        $_SESSION['password'] = $sPassword;
    Ouais ?
    Tu fais un appel de la fonction sans paramètre, donc avec $sLogin = null et $sPassword = null, donc session[login] et session[password] recoivent null dans la fonction.

    Ca me semble normal ?

  4. #4
    Membre confirmé Avatar de Dionyzos
    Homme Profil pro
    Développeur & Designer Web
    Inscrit en
    Février 2004
    Messages
    134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur & Designer Web

    Informations forums :
    Inscription : Février 2004
    Messages : 134
    Par défaut
    Citation Envoyé par Doonge Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $user = verifAuthentification();
    [...]
    function verifAuthentification($sLogin = null, $sPassword = null)
    {
    [...]
        $_SESSION['login']    = $sLogin;
        $_SESSION['password'] = $sPassword;
    Ouais ?
    Tu fais un appel de la fonction sans paramètre, donc avec $sLogin = null et $sPassword = null, donc session[login] et session[password] recoivent null dans la fonction.

    Ca me semble normal ?
    En fait j'ai simplifié grandement mon code part rapport à ce qu'il est réellement, pour que ca soit plus simple à comprendre, et j'ai merdé dans mon 1er post en simplifiant, mais mon code réel est bon, les variables sessions sont bien renseignées dans un des IF de ma fonction complète.

    En fait la fonction verifAuthentification est toujours écrite pareil, à la différence de ce qu'indique mon 1er post (désolé pour l'erreur de frappe, mais je sais pas comment on édite son post ).

    Bref, cela indique bien que le pb ne vient pas d'une erreur dans ma fonction, mais du fait que je l'appelle pas depuis le même endroit.

    Je sais que mon problème est vraiment pas simple

    En gros, pour résumer plus simplement, si je déplace mon session_start() de fonction.php à main.php, sans rien modifier d'autre, ca ne marche plus.

  5. #5
    Membre confirmé Avatar de Dionyzos
    Homme Profil pro
    Développeur & Designer Web
    Inscrit en
    Février 2004
    Messages
    134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur & Designer Web

    Informations forums :
    Inscription : Février 2004
    Messages : 134
    Par défaut
    Citation Envoyé par Celira Voir le message
    Tu as essayé de le mettre directement au début de ton index.php ?
    Bah, l'objectif est de ne justement pas le répéter systématiquement dans toutes les pages "parentes", et donc de l'avoir dans le main.php qui lui est appelé tout le temps.

Discussions similaires

  1. Réponses: 5
    Dernier message: 29/09/2008, 15h42
  2. [Sessions] Problème avec la fonction session_name()
    Par iomega dans le forum Langage
    Réponses: 5
    Dernier message: 06/10/2005, 15h24
  3. Problème session
    Par pete007 dans le forum ASP
    Réponses: 8
    Dernier message: 11/03/2004, 16h55
  4. Problème avec les fonctions
    Par jvachez dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 13/01/2004, 12h06
  5. [Postgresql]Problème avec les fonctions ...
    Par fet dans le forum Requêtes
    Réponses: 4
    Dernier message: 02/10/2003, 09h04

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