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 :

session_start modifie variable [PHP 5.3]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné Avatar de rikemSen
    Homme Profil pro
    Analyste Développeur Web - Fizzup.com
    Inscrit en
    Décembre 2007
    Messages
    387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste Développeur Web - Fizzup.com
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 387
    Par défaut session_start modifie variable
    Bonjour,

    J'ai un problème assez bizarre d'autant plus que c'est la première fois que ça me fait ça...

    En fait j'ai une variable "$nom_fichier" que je définie à une session. Seulement, ça me modifie le contenu de $nom_fichier juste après le session_start()...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
              echo 'avant session_start() : '.$nom_fichier.'<br /><br /><br />';//retourne "recueil_test.pdf"
              session_start();
               echo 'après session_start(): '.$nom_fichier.'<br />';//retourne "Recueil test"
              $_SESSION['autorisation'] = true;
              $_SESSION['id_fichier'] = $id_fichier;
              $_SESSION['nom_fichier'] = $nom_fichier;
    Et honnêtement, je ne vois pas d'où ça peut venir... Quelqu'un aurait-il une idée svp?

  2. #2
    Membre chevronné Avatar de rikemSen
    Homme Profil pro
    Analyste Développeur Web - Fizzup.com
    Inscrit en
    Décembre 2007
    Messages
    387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste Développeur Web - Fizzup.com
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 387
    Par défaut
    Erreur de débutant. Mettre session_start() tout en haut de page...

  3. #3
    Membre Expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Par défaut
    Salut

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    echo 'avant session_start() : '.$nom_fichier.'<br /><br /><br />';//retourne "recueil_test.pdf"
    session_start();
    echo 'après session_start(): '.$nom_fichier.'<br />';//retourne "Recueil test"
    N'aurais tu pas la directive du php.ini register_global à ON ?
    Chose très fortement déconseillée.
    Cà à en tout l'air car la variable $nom_fichier (pour ce code) à été écrasée juste après le démarrage de la session, ce que provoque justement cette directive.

    Aussi, n'a tu pas eu l'erreur très répandue "Headers already sent by ..." du fait d'avoir fait un echo avant de démarrer la session ?

  4. #4
    Membre chevronné Avatar de rikemSen
    Homme Profil pro
    Analyste Développeur Web - Fizzup.com
    Inscrit en
    Décembre 2007
    Messages
    387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste Développeur Web - Fizzup.com
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 387
    Par défaut
    Non, je n'ai pas registre_globals on

    ensuite si je n'ai pas eu de message à cause de echo avant session_start() c'est que j'utilise ob_start() / ob_end_flush() (bufferisation de sortie) ce que fait que la page est envoyée en une fois. Justement, ça compresse et evite d'avoir des erreurs de type header already sent.

  5. #5
    Membre Expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Par défaut
    Citation Envoyé par radicaldreamer
    Non, je n'ai pas registre_globals on
    Alors le code d'exemple que tu as mis dans le 1er post n'était pas exactement comme ça, ça me parais impossible.

    Jamais $nom_fichier n'aurais dû changé de valeur, pas comme ça d'une ligne à l'autre, sinon d'être écrasé par quelque chose d'autre.
    Il y a forcément une explication, et ce n'est pas le fait de déplacer le session_start() si le register_global est bien à Off.

    Si tu remets comme c'était, donc avec l'erreur, ce phénomène cacherait quelque chose d'autre à mon sens, pas possible.


    Justement, ça compresse et evite d'avoir des erreurs de type header already sent.
    Chacun fait comme il veut, la dessus aucun problème.
    Mais à titre personnel, je préfère 100 fois avoir une erreur dû à l'envoie d'une entête trop top ou lié à une erreur, que de ne rien voir, rien savoir, au moins en phase de développement, modifs, améliorations, etc ...
    Après, en production, pourquoi pas.

  6. #6
    Membre chevronné Avatar de rikemSen
    Homme Profil pro
    Analyste Développeur Web - Fizzup.com
    Inscrit en
    Décembre 2007
    Messages
    387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste Développeur Web - Fizzup.com
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 387
    Par défaut
    Citation Envoyé par RunCodePhp Voir le message
    Alors le code d'exemple que tu as mis dans le 1er post n'était pas exactement comme ça, ça me parais impossible.
    Je t'assure que si, mon code était tel quel et mon register_globals est bien à OFF.

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

Discussions similaires

  1. [Tableaux] modifier variable $_GET
    Par goldorax113 dans le forum Langage
    Réponses: 9
    Dernier message: 09/05/2007, 11h42
  2. Modifier variable dans une méthode
    Par dondano dans le forum Langage
    Réponses: 6
    Dernier message: 12/04/2007, 16h50
  3. Réponses: 3
    Dernier message: 13/04/2006, 21h55
  4. Modifier variable php suite à un clique
    Par budiste dans le forum Général JavaScript
    Réponses: 11
    Dernier message: 29/11/2005, 16h06
  5. [D6] Modifier variable environnement système !?
    Par Lung dans le forum API, COM et SDKs
    Réponses: 32
    Dernier message: 19/05/2005, 19h43

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