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

JavaScript Discussion :

JavaScript et sessions


Sujet :

JavaScript

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 42
    Points : 38
    Points
    38
    Par défaut JavaScript et sessions
    Bonjour,
    Je ne sais pas si c'est un problème de JS ou de PHP. Je poste ici car j'ai plus l'impression que cela vienne de mon incompréhension du fonctionnement de JS par rapport à d'anciens langages de programmation que j'ai appris il y a... quelques dizaines d'années...

    J'ai une page d'accueil.php dans laquelle je valide l'utilisateur via une requête AJAX.
    Si c'est ok, je mets le code utilisateur dans une variable php $_SESSION['id'] que je veux utiliser dans la suite du traitement dans d'autres pages.
    Si j'en reste là, tout va bien.

    Mais, sur cette page accueil, je demande à l'utilisateur de confirmer qu'il s'agit bien de lui.
    Sinon, il se déconnecte et je veux RAZ cette variable $_SESSION['id'].
    J'ai donc fait ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $('#boutDeconnecter').click(function() {
       alert('déconnecter');
       <?php unset($_SESSION['idDuStagiaire']); ?>;
       window.location.href = 'index.php';
    });
    Il me semble logique que le php unset ne s'exécute que lorsque je clique sur le bouton déconnecter.
    Et ben à priori non : si je mets cette ligne, que je ne fait pas déconnecter, je n'ai pas de variable $_SESSION['id'] dans les pages suivantes.
    Si j'enlève cette ligne cela fonctionne.

    Il semble que cette ligne s'exécute quand même, qu'elle soit dans une condition ou pas (l'alerte "Déconnecter" ne s'affiche pas...

    C'est quoi t est ce qui se passe ? Où est mon erreur de logique ?


    Nb : peut être est-ce du même ordre que lors de mes différents tests, au lieu de supprimer la ligne php unset, je la commentais en JS
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    // <?php unset($_SESSION['idDuStagiaire']); ?>;
    Elle semblait s'exécuter quand même...
    Si par contre je commente le php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php // unset($_SESSION['idDuStagiaire']); ?>;
    Il n'interprète pas la commande, et tout va bien, la variable $_SESSION['id'] existe dans les autres pages... Sauf que c'est pas ce que je veux

    Merci pour vos éléments de réponse

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 658
    Points
    66 658
    Billets dans le blog
    1
    Par défaut
    Tu as un problème de raisonnement chronologique et de portée de chacun des langages ...

    php s'exécute coté serveur pour générer le code html / js qui est envoyé vers le client

    Coté client le navigateur interprète le html / js reçu

    ce sont deux étapes distinctes et séparées
    js n'est pas interprété coté serveur et php n'est pas interprété coté client

    Tu dois refaire un ajax depuis le client pour faire le unset de ta variable de session, tu ne peux pas lancer du php dans un onclick jquery
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 42
    Points : 38
    Points
    38
    Par défaut
    Merci... je me suis encore fait piéger...
    J'ai décidément du mal avec ce côté serveur...

  4. #4
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 235
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 235
    Points : 15 532
    Points
    15 532
    Par défaut
    gardez le schéma suivant sous les yeux, il résume bien les différentes étapes :
    https://dmouronval.developpez.com/tu...te-ajax/#Lno-I

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 42
    Points : 38
    Points
    38
    Par défaut
    Bonjour et merci pour vos réponses.
    J'ai déjà vu ce genre de schéma mais ça ne me parle pas...

    En fait ce que je viens de comprendre :
    - Que ce soit du .html ou du .php, cela reste une page "statique"
    . En html, il faut la créer/modifier à la main et actualiser la page.
    . En php, c'est le serveur qui créé la page. Mais pour l'afficher, il faut l'actualiser côté client.
    - Pour faire une page dynamique, modifier des éléments de la page sans recharger l'ensemble de la page
    . Utiliser javascript pour modifier automatiquement le code du côté client
    . Utiliser ajax pour récupérer des éléments du serveur à afficher dans la page côté client.

    J'ai donc modifié mon code et ça marche !!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $('#boutAfficheId').click(function() {	
    	$.post('lireValeurSession.php', { var: 'id' }, function(data) {
    	$('#id').text(data);
    });
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <?php 
            session_start();
            if (isset($_POST['var'])) {
                    echo isset($_SESSION[$_POST['var']]) ? $_SESSION[$_POST['var']] : 'La variable $_SESSION ' . $_POST['var'] . ' n\'existe pas';
            } else {
                    echo 'Erreur dans la requête';
            }
     
     ?>
    Encore merci

  6. #6
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 235
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 235
    Points : 15 532
    Points
    15 532
    Par défaut
    Citation Envoyé par cc85 Voir le message
    En fait ce que je viens de comprendre :
    - Que ce soit du .html ou du .php, cela reste une page "statique"
    . En html, il faut la créer/modifier à la main et actualiser la page.
    . En php, c'est le serveur qui créé la page. Mais pour l'afficher, il faut l'actualiser côté client.
    oui c'est bien ça et si peut vous aider à mieux comprendre, sachez que dans les 2 cas, il y a seulement une différence à l'intérieur du serveur http.
    quand on regarde à l'extérieur, on voit la même chose :
    1. le client http envoie une requête ("/repertoire/fichier" par exemple) au serveur
    2. le serveur répond avec du code html que le client affiche par exemple s'il s'agit d'un navigateur

    la différence est que le serveur regarde le type de fichier demandé. si c'est un fichier html, il envoie le contenu directement. et si c'est un fichier php, il lance l'exécution et c'est le résultat du code qui est envoyé au client http.

  7. #7
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 658
    Points
    66 658
    Billets dans le blog
    1
    Par défaut
    Tu peux imaginer qu'une requete ajax c'est comme un coursier que tu enverrais à partir du client sur le serveur pour aller te chercher une liste de courses (données )
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 42
    Points : 38
    Points
    38
    Par défaut
    Bonne image : je prends !
    Et merci à tous, ça m'a vraiment débloqué le cerveau et j'ai pu avancer...

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 17/06/2008, 12h49
  2. problème de javascript dans session
    Par guigui47 dans le forum Langage
    Réponses: 1
    Dernier message: 30/03/2007, 20h43
  3. [WebForms]Comment utiliser une variable de session depuis JavaScript ?
    Par ThunderBib dans le forum Général Dotnet
    Réponses: 5
    Dernier message: 05/05/2006, 14h01
  4. recuperer champs texte dans variable session via javascript
    Par richton95 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 10/03/2006, 14h17
  5. JSP stocker des variables javascript en session
    Par MASSAKA dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 23/08/2005, 16h17

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