PHP : variable de session

Résolu
dimi3 Messages postés 278 Statut Membre -  
dimi3 Messages postés 278 Statut Membre -
Bonjour,

Est-il possible de créer ce que j'appellerais une variable de session. C'est-à-dire une variable à laquelle toutes les pages du site puisse faire appel et/ou modifier durant la durée de la visite d'un utilisateur ? Quelque chose en somme qui remplacerait un cookie, et éviterait le passage de variable par URL...

Merci de votre réponse.

11 réponses

  1. Brendonuts Messages postés 58 Statut Membre 12
     
    Bonjour,

    Oui. Cette question est surprenante, car les variables de session sont très utilisées en PHP.

    Il vous suffit de démarrer votre session via la ligne <?php session_start(); ?> qui doit se situer en tout début de fichier (avant même le code HTML).
    Vos variables de sessions se définissent ensuite via la ligne $_SESSION['var'] = "value";

    Bon nombres de tutoriels très complets sont disponibles...
    3
  2. dimi3 Messages postés 278 Statut Membre 20
     
    Merci pour votre réponse. Je vais étudier ça avec soin.
    0
  3. dimi3 Messages postés 278 Statut Membre 20
     
    J'ai fait mes premiers essais avec session_stat(), mais ils ne sont pas concluants !
    J'obtiens cet avertissement :
    Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /...chemin.../fichier.php:1) in /chemin/fichier.php on line 2

    Qu'est-ce que cela signifie ?
    Je vous remercie.
    0
    1. Melooo Messages postés 1476 Statut Membre 84
       
      Bonjour,
      Que tu as un affichage (echo) avant ton header
      session_start(); doit être la première ligne de code de ta page.
      0
  4. dimi3 Messages postés 278 Statut Membre 20
     
    Merci de votre réponse.

    session_start(); est pourtant bien en première ligne de mon code. Il n'y a pas d'echo avant.

    Et voilà ce que j'obtiens encore :
    Warning: Unknown: Your script possibly relies on a session side-effect which existed until PHP 4.2.3. Please be advised that the session extension does not consider global variables as a source of data, unless register_globals is enabled. You can disable this functionality and this warning by setting session.bug_compat_42 or session.bug_compat_warn to off, respectively in Unknown on line 0


    Dur... dur...

    Voici mon fichier 1 :
    <?php
    session_start();
    session_register("prenom");
    session_register("nom");
    $prenom = "Jean";
    $nom = "Valjean";
    
    ?>


    Et voici mon fichier 2 :
    <?php
    session_start();
    echo "ID de session : ".session_id()."<br>";
    echo "$prenom $nom";
    session_unset();
    session_destroy();
    ?>
    0
    1. Melooo Messages postés 1476 Statut Membre 84
       
      File le code :)
      0
    2. dimi3 Messages postés 278 Statut Membre 20
       
      rien n'y fait !
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Nabla's Messages postés 18201 Date d'inscription   Statut Contributeur Dernière intervention   3 228
     
    il faut que ce soit en début de page, c'est à dire strictement rien avant dans le fichier, même pas une ligne vide, ni code html.

    Si t'as toujours le probleme, fais attention à bien utiliser un codage utf8 sans BOM (c'est un octet bisarre placé en début de fichier texte qui fout la merde)
    0
  7. dimi3 Messages postés 278 Statut Membre 20
     
    Oui, il n'y a vraiment rien avant la fonction de session et les fichiers ne sont pas encodés avec BOM.
    Melooo, le code de mes 2 fichiers est dans le message précédent.
    0
    1. Nabla's Messages postés 18201 Date d'inscription   Statut Contributeur Dernière intervention   3 228
       
      fais voir le fichier ...
      0
  8. dimi3 Messages postés 278 Statut Membre 20
     
    Voici le fichier 1 :

    <?php
    session_start();
    session_register("prenom");
    session_register("nom");
    $prenom = "Jean";
    $nom = "Valjean";

    ?>

    Et voici mon fichier 2 :

    <?php
    session_start();
    echo "ID de session : ".session_id()."<br>";
    echo "$prenom $nom";
    session_unset();
    session_destroy();
    ?>
    0
  9. dimi3 Messages postés 278 Statut Membre 20
     
    @session_start(); 
    ini_set ('session.bug_compat_42', 0);  
    ini_set ('session.bug_compat_warn', 0); 
    session_register("prenom");  
    session_register("nom");  
    $prenom = "Jean";  
    $nom = "Valjean";  
     


    Là, je n'ai plus de messages d'erreurs ou d'avertissements, mais les variables $nom et $prénom ne passent pas... Donc ça ne me sert pas à grand-chose... :-(
    0
    1. Melooo Messages postés 1476 Statut Membre 84
       
      tu as essayé comme ca :
      $_SESSION['nom'] = "Valjean";
      $_SESSION[prenom'] = "Jean";
      
      0
    2. dimi3 Messages postés 278 Statut Membre 20
       
      Oui, les variables ne passent pas non plus.
      0
  10. dimi3 Messages postés 278 Statut Membre 20
     
    Avec le code suivant pour récupérer les variables, ça fonctionne :
    foreach($_SESSION as $cle => $valeur)
    {
    echo "  <li><strong>".ucfirst($cle)." : </strong><em>".$valeur."</em></li>\n";
    }
    


    Je l'ai trouvé à l'adresse : http://www.php-astux.info/sessions-php.php

    Merci à tous.
    0
  11. dimi3 Messages postés 278 Statut Membre 20
     
    Je rajoute un petit détail qui m'a donné bien du fil à retordre. Il faut bien déclarer la variable de session dans le fichier index du site. Faute de quoi, la variable est irrégulièrement reconnue dans les autres pages du site.
    0