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_id changeant chez 1and1


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de O( N )
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2006
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2006
    Messages : 126
    Par défaut Session_id changeant chez 1and1
    Bonsoir @ tous,

    je développe mon premier site e-commerce et après avoir avancé
    suffisamment sur le sujet j'ai déposé les premiers codes sur Internet !

    Seulement voilà, j'ai quelques bizarreries auxquelles je ne m'attendait pas !
    Le code fonctionne correctement en local mais pas chez l'hébergeur qui est 1and1 !
    (J'ai pu trouver sur Internet une information à vérifier
    qui parle de changement de frame à chaque redirection qui causerait la perte des sessions !?)

    J'ai pu trouver, je pense, les erreurs !
    J'ai une perte des valeurs des variables de session
    et j'ai remarqué que mes identifiants de sessions changent sur chaque page !

    Or en local l'identifiant reste le même ! (même après déconnexion et un session_destroy() ?)

    J'ai donc quelques questions

    Merci pour votre lecture et vos réponses

    P.S. :
    J'ai mis la fonction session_start() au début de mes fichiers php également comme indiqué dans les cours que j'ai parcouru.

  2. #2
    Membre Expert Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 895
    Par défaut
    hmmm ne connaissant pas spécialement bien cet hébergeur, je pense que le plus rapide est de leur poser directement la question "comment utiliser mes fonctions chez vous ?"

    De plus, il faudrait peut-être voir du côté du phpinfo()... peut-être ont-ils une configuration "à la Free" (chez Free, il faut créer un dossier ["sessions" je crois] à la racine du site) et pour peu que tu sois en display_errors Off, tu risques pas d'être au courant =)

  3. #3
    Membre confirmé Avatar de O( N )
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2006
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2006
    Messages : 126
    Par défaut Résolu
    Bon après les avoir contacté !
    Ils m'ont clairement indiqué que de leur côté aucun problème n'existait ! ( vive la prétention !)
    Et m'ont dit d'aller voir dans les CMS pour prendre les scripts !
    Je suis tombé heureusement pour moi sur un tutoriel m'indiquant l'erreur !

    Le code de 'session_start()' doit impérativement être non seulement au début du code php mais aussi et surtout au début du fichier !
    hors dans mon cas il se situait après le html et le head entre autre donc en 6eme ligne.

    Bon code ...

    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();
    ?>
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <title>... Mon Site ...</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <?php
    ... le reste du code PHP
    ?>
    Mauvais code ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <title>... Mon Site ...</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <?php 	
    session_start();
    ... le reste du code PHP
    ?>
    Le code était correct mais la position du code non !
    Franchement là ! Je pas trouvé d'explication du pourquoi ce problème de placement !

    Le plus frustrant est du fait que le code passera sans problème en local ! mais le session_id lui changera si on se trouve sur serveur ! (difficile donc de croire 1and1 du coup !)

    J'imagine que les serveurs ont une configuration plus restrictive que chez nous en local en utilisant par exemple easyPHP qui nous donne sa configuration.

    Merci pour les renseignements en tout cas et @ bientôt tous

  4. #4
    Membre Expert Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 895
    Par défaut
    Effectivement, session_start() doit se trouver au tout début.... ayant lu le "PS" du premier post je pensais que tout était en ordre mais il s'agissait d'un problème de compréhension

    "au tout début" ne veut pas dire qu'on doit le mettre en premiere ligne d'un fichier et qu'ensuite on peut inclure ce fichier où on veut

    L'essentiel à retenir, c'est que session_start() NE PEUT PAS etre utilisé apres un quelconque affichage ! Ceci n'interdit par contre pas d'exécuter du code PHP avant de faire session_start(); sauf si le code PHP retourne une erreur, le session_start() en retournera forcément une (l'erreur provoquant une sortie)

    Pour palier à ce problème on peut utiliser les fonctions ob_start() pour eviter la sortie du buffer et multiplier les erreurs affichées.

    Exemples :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    <?php
     
    ob_start();
     
    echo "Hello World";
     
    $out = ob_get_clean();
    $out = strtolower($out);
     
    session_start();
     
    var_dump($out);
    ?>
    Ce code ne produira aucune erreur... en effet, l'affichage de "Hello World" se faisant APRES le session_start();

    PS : en général, on met quand même le session_start() tout en haut du fichier principal histoire d'être certain

    PS2 : ces informations vallent aussi pour les fonctions header() et setcookie()

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

Discussions similaires

  1. [Configuration] limite upload sur serveur mutualisé 'privilege' chez 1and1?
    Par ned-flanders dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 6
    Dernier message: 13/03/2007, 16h46
  2. problème de sessions chez 1and1
    Par pas30 dans le forum 1&1
    Réponses: 1
    Dernier message: 15/01/2007, 09h51
  3. Requete ne marchant pas chez 1and1 mais en local
    Par Alain15 dans le forum Requêtes
    Réponses: 1
    Dernier message: 04/06/2006, 19h50
  4. problème lors de la publication chez 1and1
    Par aude_1603 dans le forum 1&1
    Réponses: 3
    Dernier message: 27/02/2006, 14h58
  5. Réponses: 9
    Dernier message: 17/11/2005, 10h33

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