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 :

Utilisation de sessions


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Homme Profil pro
    Etude technique THT
    Inscrit en
    Juillet 2012
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Etude technique THT
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Juillet 2012
    Messages : 84
    Points : 111
    Points
    111
    Par défaut Utilisation de sessions
    Bonjour,

    Afin de me familiariser avec l'utilisation de sessions j'ai créé un fichier page1.php et un fichier page2.php.
    Dans le fichier page1.php, définition d’une session et affichage de celle-ci comme suivant :

    page1.php

    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
     
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
     
    <html>
    <head>
        <meta http-equiv="content-type" content="text/html; charset=utf-8" />
        <meta name="author" content="" />
        <meta name="copyright" content="" />
        <meta name="description" content="">
        <meta name="keywords" content="" />
     
        <title>CESSION page 1</title>
     
    </head>
     
     
    <body>
     <?php
     
    session_start();
     
    echo 'Page numéro 1    ' . '</br>    ';
     
    $_SESSION['favcolor'] = 'vert';
     
    echo $_SESSION['favcolor'];
     
     
    echo '<br /><a href="page2.php?' . SID . '">page 2</a>';
     
     
    ?>
     
    </body>
    </html>
    Dans la page2.php affichage de la session prédéfinie dans la page1.php comme suivant :

    page2.php

    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
     
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
     
    <html>
    <head>
        <meta http-equiv="content-type" content="text/html; charset=utf-8" />
        <meta name="author" content="" />
        <meta name="copyright" content="" />
        <meta name="description" content="">	
        <meta name="keywords" content="" />
        <title>CESSION page 2</title>
     
    </head>
     
     
    <body>
     <?php
     
    session_start();
     
    echo 'Page numéro 2    ' . '</br>    ';
     
    echo 'Couleur : ' . $_SESSION['favcolor'];
     
    echo '<br /><a href="page1.php?' . SID . '">page 1</a>';
     
    ?>
     
    </body>
    </html>
    Le problème $_SESSION['favcolor'] dans la page2.php ne s’affiche pas. Auriez-vous une idée ?
    Cordialement.

  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 : 39
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Aucun message d'erreur ? Normalement, session_start doit être appelé au tout début du script, et surtout avant le code HTML.
    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 régulier
    Homme Profil pro
    Etude technique THT
    Inscrit en
    Juillet 2012
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Etude technique THT
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Juillet 2012
    Messages : 84
    Points : 111
    Points
    111
    Par défaut Re session_start
    Bonjour Celira,

    Merci pour votre réponse.

    Non il ni à aucun message d’erreur.
    J’ai placé session_start au début du script dans les pages 1 et 2, mais cela ne fonctionne toujours pas.

    Emplacement dans le code :

    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
     
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
    <?php session_start(); ?>
     
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
     
    <html>
     
    <head>
        <meta http-equiv="content-type" content="text/html; charset=utf-8" />
        <!-- <meta charset="utf-8"> -->
    	<meta name="author" content="" />
    	<meta name="copyright" content="Le contenu de ce site est protégé par les droits d'auteur." />
        <meta name="description" content="Description complete (pas trop long)"> <!-- Uniquement dans la page index -->	
    	<meta name="keywords" content="" />
    	<title>CESSION page 1</title>
     
     
     
    </head>
    Puis déplacer après la balise <html> aucun résultat, ensuite positionner avant la fermeture du <head> mais $_SESSION['favcolor'] ne s’affiche toujours pas dans la page2.php.

    A savoir qu’elle s’affiche bien dans la page1.php dans tous les cas de figure cités précédemment.

    Pourriez-vous me spécifier l’emplacement où doit-être positionner session_start dans mon code ?

  4. #4
    Membre régulier
    Homme Profil pro
    Etude technique THT
    Inscrit en
    Juillet 2012
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Etude technique THT
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Juillet 2012
    Messages : 84
    Points : 111
    Points
    111
    Par défaut Complément d’information
    Autre position :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <?php session_start(); ?>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
     
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
     
    <html>
    Cela ne fonctionne toujours pas avec la page2.php!

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    • session_start() doit être sur la toute première ligne du code.
    • le doctype est obsolète,
    • il ne faut qu'une seule balise <html>





    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?php  // PAS d'ESPACE AVANT !
    if( session_id()=='' ){ session_start(); }
    header('Content-type:text/html; charset=UTF-8');	// encodage UTF-8
     
    // ici, on peut effectuer des traitements PHP
    // .........
    ?>
    <!DOCTYPE HTML>
    <html>
     <head>
    	<meta charset="utf-8" />
    ...

  6. #6
    Membre régulier
    Homme Profil pro
    Etude technique THT
    Inscrit en
    Juillet 2012
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Etude technique THT
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Juillet 2012
    Messages : 84
    Points : 111
    Points
    111
    Par défaut
    Bonjour jreaux62,

    Tout d’abord merci pour votre réponse.
    J’ai appliqué les corrections sur les pages 1 et 2 mais $_SESSION['favcolor'] ne s’affiche toujours pas avec la page2.php.

    Voici mon code pour les pages 1 et 2:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <?php if( session_id()=='' ){ session_start(); }
    header('Content-type:text/html; charset=UTF-8');
    ?>
     
    <!DOCTYPE HTML>
     
    <html>
     
    <head>
        <!-- <meta http-equiv="content-type" content="text/html; charset=utf-8" /> -->
        <meta charset="utf-8">
    Cordialement.

  7. #7
    Membre régulier
    Homme Profil pro
    Etude technique THT
    Inscrit en
    Juillet 2012
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Etude technique THT
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Juillet 2012
    Messages : 84
    Points : 111
    Points
    111
    Par défaut Réctification
    J’ai rectifié en supprimant l’espace, le code commence à la ligne 1 !

  8. #8
    Invité
    Invité(e)
    Par défaut
    Si tu ne nous donnes pas le code complet, on ne peut pas tester, ni voir où peut se situer l'erreur.

  9. #9
    Membre régulier
    Homme Profil pro
    Etude technique THT
    Inscrit en
    Juillet 2012
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Etude technique THT
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Juillet 2012
    Messages : 84
    Points : 111
    Points
    111
    Par défaut
    Effectivement vous avez raison!

    Page1.php

    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
    43
    44
    45
    46
    47
    48
    49
    <?php 
    if( session_id()=='' ){ session_start(); }
    header('Content-type:text/html; charset=UTF-8');
    ?>
     
    <!DOCTYPE HTML>
     
    <html>
     
    <head>
        <!-- <meta http-equiv="content-type" content="text/html; charset=utf-8" /> -->
        <meta charset="utf-8">
    	<meta name="author" content="" />
    	<meta name="copyright" content="Le contenu de ce site est protégé par les droits d'auteur." />
        <meta name="description" content="Description complete (pas trop long)"> <!-- Uniquement dans la page index -->	
    	<meta name="keywords" content="" />
    	<title>CESSION page 1</title>
     
     
     
    </head>
     
    <!-- ====================================================================================================================
    CESSION PHP
    http://www.developpez.net/forums/forumdisplay.php?f=239]Sessions
    ========================================================================================================================= -->
     
    <body>
     <?php
    // page1.php
     
    echo 'Page numéro 1    ' . '</br>    ';
     
    $_SESSION['favcolor'] = 'vert';
     
    echo $_SESSION['favcolor'];
     
     
    echo '<br /><a href="page2.php?' . SID . '">page 2</a>';
     
    /*
    Pour les utilisateur de "Free.fr" et pour utiliser les sessions, vous devez créer un dossier nommé sessions (au pluriel) 
    à la racine de votre site par l'intermediaire de votre ftp.
    */
     
    ?>
     
    </body>
    </html>
    Page2.php

    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
    43
    44
    45
    46
    <?php 
    if( session_id()=='' ){ session_start(); }
    header('Content-type:text/html; charset=UTF-8');
    ?>
     
    <!DOCTYPE HTML>
     
    <html>
     
    <head>
    <!-- <meta http-equiv="content-type" content="text/html; charset=utf-8" /> -->
        <meta charset="utf-8">
    	<meta name="author" content="" />
    	<meta name="copyright" content="Le contenu de ce site est protégé par les droits d'auteur." />
        <meta name="description" content="Description complete (pas trop long)"> <!-- Uniquement dans la page index -->	
    	<meta name="keywords" content="" />
    	<title>CESSION page 2</title>
     
    </head>
     
    <!-- ====================================================================================================================
    CESSION PHP
    http://www.developpez.net/forums/forumdisplay.php?f=239]Sessions
    ========================================================================================================================= -->
     
    <body>
     <?php
     
    echo 'Page numéro 2    ' . '</br>    ';
     
    echo 'Couleur : ' . $_SESSION['favcolor'];
     
     
    //echo '<br /><a href="page1.php">page 1</a>'; // Fonctionne si le cookie a été accepté
     
    // Ou bien, en indiquant explicitement l'identfiant de session
    //header('Location: page1.php'); // Ne change rien à l'affichage de la page2.php qui ne fontionne pas !
    echo '<br /><a href="page1.php?' . SID . '">page 1</a>';
     
     
     
     
    ?>
     
    </body>
    </html>

    Cordialement.

  10. #10
    Invité
    Invité(e)
    Par défaut
    Oui...
    Et ça fonctionne.


    N.B. Je vois
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        <meta name="description" content="Description complete (pas trop long)"> <!-- Uniquement dans la page index -->
    Non.
    On peut/DOIT mettre une description dans CHAQUE PAGE (qu'on veut référencer), MAIS il faut une description DIFFERENTE pour chaque.

  11. #11
    Membre régulier
    Homme Profil pro
    Etude technique THT
    Inscrit en
    Juillet 2012
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Etude technique THT
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Juillet 2012
    Messages : 84
    Points : 111
    Points
    111
    Par défaut
    Merci pour l’information concernant le meta.

    Par contre mon code ne fonctionne pas sur mon PC
    Voici le lien du site pour le test :

    http://arousseau-contact.fr/sessions/page1.php

    La page2.php affiche Couleur : au lien de Couleur : vert

    Cordialement.

  12. #12
    Invité
    Invité(e)
    Par défaut
    Je ne comprends pas.
    Mes tests, avec les mêmes codes, fonctionnent...

  13. #13
    Membre régulier
    Homme Profil pro
    Etude technique THT
    Inscrit en
    Juillet 2012
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Etude technique THT
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Juillet 2012
    Messages : 84
    Points : 111
    Points
    111
    Par défaut
    Curieux….

    Mes configurations :
    - Windows 10
    - PHP 7
    - Création des pages PHP 1 et 2 en UFT8 sous notepad++

    Puis utilisation de FileZilla pour la mise en ligne.
    Ci-joint mes 2 fichiers.

    Pourriez-vous me dire si vous détecté une erreur dans ces 2 fichiers, merci?
    Cordialement.
    Fichiers attachés Fichiers attachés

  14. #14
    Invité
    Invité(e)
    Par défaut
    Ajoute un débogage :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?php // PAS d'ESPACE AVANT !
     
    if( session_id()=='' ){ session_start(); $message = 'session fonctionne'; }
    else
    { $message = 'session ne fonctionne pas'; }
    header('Content-type:text/html; charset=UTF-8');	// encodage UTF-8
     
    error_reporting(E_ALL); 	// en TEST !!
     
    ?>
    ...mais chez moi, tes codes fonctionnent tel quel (en local et sur serveur OVH) : http://www.jerome-reaux-creations.fr/test/page1.php

  15. #15
    Membre régulier
    Homme Profil pro
    Etude technique THT
    Inscrit en
    Juillet 2012
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Etude technique THT
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Juillet 2012
    Messages : 84
    Points : 111
    Points
    111
    Par défaut
    Bonjour jreaux62,

    En ajoutant le débogage sur les pages 1 et 2 voici ce qui se produit pour la page1 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Warning: Cannot modify header information - headers already sent by 
    (output started at /homepages/44/d584901367/htdocs/sessions/page1.php:1) 
    in /homepages/44/d584901367/htdocs/sessions/page1.php on line 45
    Ligne 45 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    header('Location: page1.php');
    Il ne peut donc pas modifier les informations d'en-tête !

    Pour pouvoir continuer le test j’ai mis la ligne 45 en commentaire, puis remis sur le site.
    Plus de problème pour la page1.php mais pour la page 2.php j’ai l’erreur suivante :

    Notice: Undefined index: favcolor in /homepages/44/d584901367/htdocs/sessions/page2.php on line 39

    Ligne 39 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo 'Couleur : ' . $_SESSION['favcolor'];
    L’Index n’est pas défini pour favcolor pourtant favcolor est déclaré dans la page 1 !

    error_reporting(E_ALL); m’aide beaucoup, merci.

    Cordialement.

  16. #16
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    un header() NE peut PAS être envoyé, si du HTML a été déjà affiché.
    C'est valable pour les echo '...';, les espaces et passage à la ligne dans le code HTML (en dehors des balises <?php et ?>)

    N'oubliez jamais que header() doit être appelée avant que le moindre contenu ne soit envoyé, soit par des lignes HTML habituelles dans le fichier, soit par des affichages PHP.

    Une erreur très classique est de lire un fichier avec include ou require, et de laisser des espaces ou des lignes vides, qui produiront un affichage avant que la fonction header() ne soit appelée.
    Le même problème existe avec les fichiers PHP/HTML standards.

  17. #17
    Membre régulier
    Homme Profil pro
    Etude technique THT
    Inscrit en
    Juillet 2012
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Etude technique THT
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Juillet 2012
    Messages : 84
    Points : 111
    Points
    111
    Par défaut
    Pour la page1.php, j’ai déplacé le header comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?php // PAS d'ESPACE AVANT !
     
    if( session_id()=='' ){ session_start(); $message = 'session fonctionne'; }
    else
    { $message = 'session ne fonctionne pas'; }
    header('Content-type:text/html; charset=UTF-8');	// encodage UTF-8
    header('Location: page1.php');
    error_reporting(E_ALL); 	// en TEST !!
    ?>
     
    <!DOCTYPE HTML>
    Et effectivement cela fonctionne.

    Par contre le problème reste identique sur la page2.php avec le même message d’erreur.

    soit :

    Notice: Undefined index: variable in /homepages/44/d584901367/htdocs/sessions/page2.php on line 40

    Ligne 40 : echo 'Couleur : ' . $_SESSION['favcolor'];

  18. #18
    Invité
    Invité(e)
    Par défaut
    Donc,

    dans le fichier page1.php...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    header('Location: page1.php');
    ...tu rediriges vers.......page1.php !

    C'est une boucle infinie !
    Il NE faut PAS le faire !


    Ce serait bien que tu comprennes toi-même ce que tu fais....
    ...sinon, ça va vite d'écrire n'importe quoi.

  19. #19
    Membre régulier
    Homme Profil pro
    Etude technique THT
    Inscrit en
    Juillet 2012
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Etude technique THT
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Juillet 2012
    Messages : 84
    Points : 111
    Points
    111
    Par défaut
    En effet il serait mieux que je comprenne ce que je fais !
    J'ai retiré le header('Location: page1.php');.

    Cela n’explique toujours pas pourquoi cela fonctionne chez vous et pas chez moi.

    Cela peut-il provenir du php.ini chez l’hébergeur, dans mon cas 1 & 1 ou utilisez-vous une version différente de PHP soit dans mon cas PHP 7 ?

    Par contre chez moi en local cela fonctionne.

  20. #20
    Invité
    Invité(e)
    Par défaut
    Tu parles de header('Location...), alors qu'il n'y en a pas dans les codes que tu m'as montré (et que j'ai testés).

    Comment veux-tu qu'on t'aide ?

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 3 123 DernièreDernière

Discussions similaires

  1. Réponses: 6
    Dernier message: 22/09/2005, 11h21
  2. Réponses: 5
    Dernier message: 22/08/2005, 17h48
  3. Utilisation de [Session] et de [BDD]
    Par Alexr dans le forum JDBC
    Réponses: 1
    Dernier message: 21/06/2005, 15h09
  4. [VB.NET] Utilisation des sessions dans Session_End ?
    Par San Soussy dans le forum ASP.NET
    Réponses: 2
    Dernier message: 02/02/2005, 17h40
  5. [JSP] Utilisation de session
    Par samios dans le forum Servlets/JSP
    Réponses: 7
    Dernier message: 02/11/2004, 12h17

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