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 :

Impossible d'afficher le contenu de mon panier et supprimer des éléme


Sujet :

Langage PHP

  1. #41
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Octobre 2010
    Messages : 104
    Points : 95
    Points
    95
    Par défaut
    encore une petite chose, normalement les sessions se détruisent lorsque l'on ferme une page, c'est donc peut-être un problème de cache.

    essaye d'ajouter ce code au tout début de ta page index

    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
    Header("Expires: 0");
    Header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
    Header('Cache-Control: no-store, no-cache, must-revalidate');  // HTTP/1.1
    Header('Cache-Control: pre-check=0, post-check=0, max-age=0'); // HTTP/1.1
    Header("Pragma: no-cache");                                    // HTTP/1.0	
    Header("Content-Type: text/html; charset=ISO-8859-1");
    
    <?php
    session_start();
    /* unset($_SESSION['panier']); */
    
    
     
    /*On vérifie si le panier existe*/
    if(!isset($_SESSION['panier']))

  2. #42
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Octobre 2010
    Messages : 104
    Points : 95
    Points
    95
    Par défaut
    sinon il y a plus simple :

    Faire un bouton 'déconnecter' qui va te vider tes sessions et rediriger vers la page d'accueil.

    Le problème est que les sessions sont automatiquement détruite a la fermeture du navigateur et pas seulement d'une page ou d'un onglet.

    Donc si tu met un bouton 'deconnecter', l'utilisateur clic dessus et hop tu lui fais sauter ses sessions.

  3. #43
    Membre régulier
    Profil pro
    IT Développeur
    Inscrit en
    Mars 2009
    Messages
    274
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : IT Développeur

    Informations forums :
    Inscription : Mars 2009
    Messages : 274
    Points : 96
    Points
    96
    Par défaut
    Ca ne marche pas non plus.

    Oui j'avais pensé également à un bouton logout mais si l'utilisateur ne clique pas dessus, mon problème n'est pas résolu. C'est pour cela que je voulais essayer de forcer la session à être vidée.

  4. #44
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Octobre 2010
    Messages : 104
    Points : 95
    Points
    95
    Par défaut
    Oui mais généralement un utilisateur, soit il clique sur 'se déconnecter' soit il ferme son navigateur.

    Dans tous les cas, tu peux faire le test avec deux navigateurs différents, une session est unique par ouverture de navigateurs, donc des utilisateurs différents n'auront pas de problèmes, chacun aura sa session.

    Attend un peu voir si quelqu'un à une idée mais autre que le 'logout' je ne vois pas, j'ai usé tous ce que je savais la ^^

  5. #45
    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
    Points : 3 947
    Points
    3 947
    Par défaut
    Salut

    J'ai quelque peu en diagonal ce topic, pas sûr d'avoir tout saisie.

    Cependant, je pense qu'il faut déjà pas confondre la destruction de la session et la destruction d'une variable (ou d'1 élément) de session.
    Supprimer juste le panier fera que si l'utilisateur est identifié, il le sera toujours, alors que détruire la session, il lui faudra se ré-identifier.

    Pour tenter de comprendre, ce que je te propose c'est de créer un nouveau fichier (genre supprimer_panier.php), et y mettre ce code, et pointer dessus.
    (quitte à créer un lien dans une autre vers celui ci) :
    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
     
    // On démarre la session
    session_start();
     
    echo '<pre>';
     
    // On affiche l'intégralité de la session actuel
    print_r($_SESSION);
     
    // On détruit le panier
    if (isset($_SESSION['panier'])) unset($_SESSION['panier']);
     
    // On affiche à nouveau l'intégralité de la session.
    // Théoriquement il ne devrait plus avoir de panier
    print_r($_SESSION);
     
    echo '</pre>';
     
     
    // Un lien pour ré-afficher cette même page
    echo '<br />';
    echo '<a href="http://domaine.com/supprimer_panier.php">Ré-afficher la page</a>';
     
    echo '<br />';
    echo '<a href="http://domaine.com/index.php">Retour page accueil</a>';
    ?>
    Théoriquement, le panier devrait être détruit lors du 2ème print_r()
    Et si on ré-affiche la page, les 2 print_r() devraient être identiques, et ne plus avoir de données liées au panier.

    Puis après, repartir sur une page de ton site, la page d'accueil ou autre, et voir ce que ça donne concernant le panier.

    As tu essayé ? Qu'est-ce que ça donne ?
    Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
    Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]

  6. #46
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Octobre 2010
    Messages : 104
    Points : 95
    Points
    95
    Par défaut
    normalement ton code fonctionne ^^

    son problème est qu'il souhaite vider cet élément de session à la fermeture de la page, car s'il ferme juste un onglet sa session reste active.

    on a tenté avec l'évènement unload qui ne convient pas au besoin.

    Personnellement je pense que le mieux serait un bouton de 'logout'.

    as-tu une autre idée RunCodePhp ?

  7. #47
    Membre régulier
    Profil pro
    IT Développeur
    Inscrit en
    Mars 2009
    Messages
    274
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : IT Développeur

    Informations forums :
    Inscription : Mars 2009
    Messages : 274
    Points : 96
    Points
    96
    Par défaut
    Hello RunCodePhp,

    merci pour ta réponse.

    j'ai essayé ton code et cela ne fonctionne pas non plus.

    Petit précision: en fait ma session commence automatiquement au chargement de la page. L'utilisateur ne doit pas s'identifier.

    De plus je fais en même temps d'autres essaies de session sur une autre page et lorsque j'utilise ton code, lors du print_r($_SESSION), ce sont toutes les sessions ouvertes qui apparaissent.

    Autre précision, je ne sais pas si ça intervient mais je suis sous OSX et donc si je ferme une fenêtre de mon navigateur ce n'est pas le navigateur qui est fermé.

  8. #48
    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
    Points : 3 947
    Points
    3 947
    Par défaut
    Je t'assure, les "ça ne fonctionne pas" ou "ça ne marche pas", ça ne signifie rien.
    Personnellement ça ne m'avance pas.


    Dans le code que je t'ai mis, il y a 2 print_r().
    Ce qu'il aurait intéressant, ça aurait été de faire un copier/coller des 2 print_r(), de manière qu'on constate aussi ce qu'il se passe.
    Ou alors dire ou confirmer que le 2ème print_r() contient toujours le panier.

    Aussi, dire ce que tu constate une fois avoir pointer sur cette page et ensuite revenir sur ton site, est ce que le panier réapparait avec les mêmes données qu'au début ?
    Etc, etc ... c'est ça qui est utile à savoir, vois tu ?



    Essai cette fois en corrigeant comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    // On détruit le panier
    if (isset($_SESSION['panier'])) {
        echo 'On entre dans la condition : Le panier existe bien<br />';
        $_SESSION['panier'] = array();
        unset($_SESSION['panier']);
    }
    Il va de soit aussi que lors de tes essais, il faut mettre un ou 2 produits dans le panier pour après ici voir si ceux là sont supprimés ou pas (utilisateur identifié ou pas ça ne change rien).
    C'est bien le but recherché ?

    Si c'est détruire la session, ce n'est pas du tout la même chose (c'est ce que je disais précédemment), alors faut préciser les choses.


    Autre point important, c'est de confirmer (ou corriger) que l'affichage des erreurs est bien activé (php.ini : display_errors à On) et que le niveau de la gestion des erreurs est du genre E_ALL.
    Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
    Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]

  9. #49
    Membre régulier
    Profil pro
    IT Développeur
    Inscrit en
    Mars 2009
    Messages
    274
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : IT Développeur

    Informations forums :
    Inscription : Mars 2009
    Messages : 274
    Points : 96
    Points
    96
    Par défaut
    J'ai remplacé par le bout de code que tu m'as donné et effectivement lorsque je clique sur Reafficher la page, mon panier est vide.

    Mais une remarque quand je clique la première fois sur le lien vers la page supprimer_panier.php, un autre panier apparait ("basket") alors que celui avec lequel je travaille est "panier"

    C'est sans doute dû au print_r($_SESSION) ?

    Voici ce qu'il m'affiche lors lien vers la page supprimer_panier.php

    Array
    (
    [basket] => Array
    (
    [produit] => Array
    (
    )

    [qantite] => Array
    (
    )

    [nb_couleur] => Array
    (
    )

    )

    [panier] => Array
    (
    [produit] => Array
    (
    )

    [prix] => Array
    (
    )

    )

    )
    On entre dans la condition : Le panier existe bien
    Array
    (
    [basket] => Array
    (
    [produit] => Array
    (
    )

    [qantite] => Array
    (
    )

    [nb_couleur] => Array
    (
    )

    )

    )

    Ré-afficher la page

    Puis après avoir cliqué sur Réafficher page

    Array
    (
    [basket] => Array
    (
    [produit] => Array
    (
    )

    [qantite] => Array
    (
    )

    [nb_couleur] => Array
    (
    )

    )

    )
    Array
    (
    [basket] => Array
    (
    [produit] => Array
    (
    )

    [qantite] => Array
    (
    )

    [nb_couleur] => Array
    (
    )

    )

    )

    Ré-afficher la page

  10. #50
    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
    Points : 3 947
    Points
    3 947
    Par défaut
    J'ai remplacé par le bout de code que tu m'as donné et effectivement lorsque je clique sur Reafficher la page, mon panier est vide.
    Mais est-ce que c'était différent dans l'essai (code) précédent ?
    Le seule différence, c'est que j'ai rajouté ceci, ce qui est théoriquement inutile.
    Mais tu aurais fais plusieurs essai, tantôt l'un, tantôt l'autre code, tu aurais vu la différence.
    Les print_r() sont là juste pour constater visuellement comment les choses se passent, epour comprendre.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $_SESSION['panier'] = array();
    C'est sans doute dû au print_r($_SESSION) ?
    Non, pas du tout.
    "print" veut dire "afficher", en aucune manière ça détruirait quelque chose.

    un autre panier apparait ("basket") alors que celui avec lequel je travaille est "panier"
    Il n'y pas de mystère, c'est que ton code prévoit de créer une variable de session "basket" (tout comme "panier").
    Un ancien code par exemple.

    Si elle est vraiment inutile (ce qui semble le plus logique), alors il faut repérer chaque ligne de code de ton projet qui fait allusion à cet élément "basket", et les supprimer.
    Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
    Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]

Discussions similaires

  1. Afficher le contenu de mon répertoire
    Par ledid33 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 12/01/2012, 22h23
  2. impossible d'afficher mes ImageIcons dans mon .jar
    Par yoann34 dans le forum Composants
    Réponses: 3
    Dernier message: 30/07/2009, 08h09
  3. Réponses: 9
    Dernier message: 20/01/2008, 15h16
  4. Réponses: 2
    Dernier message: 03/02/2007, 00h39

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