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 :

Créer la session PHP depuis une page inscription du site [PHP 7]


Sujet :

Langage PHP

  1. #1
    Membre actif
    Inscrit en
    Janvier 2003
    Messages
    604
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 604
    Points : 247
    Points
    247
    Par défaut Créer la session PHP depuis une page inscription du site
    Bonjour, en local je lançais ma session PHP depuis un appel Ajax et je récupérais l'identifiant de session qui me permettait d'afficher des pages et des parties du sites aux utilisateurs en fonction qu'ils soient inscrits ou non.
    Hors sur le serveur je ne peux avoir de session_start()au milieu du code, de ce fait comment puis créer une nouvelle session à la suite de l'inscription d'un utilisateur, en ayant des pages PHP qui produisent du HTML visible sous la condition que mon identifiant de session existe ? Et en garantissant la sécurité... Je n'ais pas trouvé d'exemple probant.
    Merci d'avance de votre retour.

  2. #2
    Membre actif
    Inscrit en
    Janvier 2003
    Messages
    604
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 604
    Points : 247
    Points
    247
    Par défaut
    Bonjour, est ce que quelqu'un aurait une idée pour m'aider ?
    Je reformule ma question :

    Dans une page PHP appelée par une requête Ajax je crée l'identifiant d'un nouvel inscrit en base de données et je sauvegarde cet identifiant dans ma variable de session $_SESSION['id_B2B'].
    Cependant lorsque je redirige, sitôt l’appel Ajax, vers la page d'accueil de mon site, la variable de session $_SESSION['id_B2B'] est vide. Comment faire pour conserver cette valeur ?

    Est ce que quelqu’un aurait une idée pour m'aider?

  3. #3
    Membre confirmé
    Homme Profil pro
    Autre
    Inscrit en
    Juillet 2021
    Messages
    321
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Juillet 2021
    Messages : 321
    Points : 642
    Points
    642
    Par défaut
    Bonjour,

    Dans la page d'accueil de ton site, est-ce que la session PHP est bien initialisée (via session_start()) ?

  4. #4
    Membre actif
    Inscrit en
    Janvier 2003
    Messages
    604
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 604
    Points : 247
    Points
    247
    Par défaut
    Sur toutes les pages du site je fais au tout debut du php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ( empty(session_id()) ) session_start();
    Et je fais l'affectation de mon id_B2B dans l a variable de Session au niveau du serveur appelé par de l'Ajax, ci-dessous :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $sql ="INSERT INTO CLIENTS_B2B (id,SOCIETE,NOM_REPRESENTANT,PRENOM_REPRESENTANT) VALUES (NULL,'$LaSocieteAintegrer','$leNomRepresentantAintegrer','$lePrenomRepresentantAintegrer')";
     
        try {
        // TENTATIVE D'INSERTION DES DONNÉES
          $req = $bdd->query($sql);
          $NouvelIdPourLaSession = $bdd->lastInsertId();
          $_SESSION['id_B2B']=$NouvelIdPourLaSession;
           ...
    et je souhaite ensuite aller sur la page d'accueil via un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.location.href="http://Conception/Caneva.php"
    à la suite de l'appel Ajax.

  5. #5
    Membre confirmé
    Homme Profil pro
    Autre
    Inscrit en
    Juillet 2021
    Messages
    321
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Juillet 2021
    Messages : 321
    Points : 642
    Points
    642
    Par défaut
    La fonction session_id() permet de récupérer l'identifiant de session php.
    Dans ton code, puisque cette fonction est appelé avant d'initialiser la session avec session_start(), l'identifiant de session n'est pas encore initialisé et la fonction session_id() retourne une chaine vide -> ta condition est alors fausse et la fonction session_start() n'est donc pas exécutée.

    Supprime ta condition sur session_id() et utilise directement la fonction session_start() pour initialiser la session.

  6. #6
    Membre actif
    Inscrit en
    Janvier 2003
    Messages
    604
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 604
    Points : 247
    Points
    247
    Par défaut
    Seulement la session est déjà initialisée au début de la page d'inscription, sinon je ne pourrais remplir
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     $_SESSION['id_B2B']=$NouvelIdPourLaSession;
    (suite à l'intégration des données dans la base.)
    Il faut bien que j'ai une session pour sauvegarder l'identifiant de mon nouvel inscrit ?
    Sinon comment faire autrement ?
    Merci d'avance de votre avis.

  7. #7
    Membre confirmé
    Homme Profil pro
    Autre
    Inscrit en
    Juillet 2021
    Messages
    321
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Juillet 2021
    Messages : 321
    Points : 642
    Points
    642
    Par défaut
    La session PHP doit être initialisée pour toutes les requêtes http, peu importe que la requête soit faite en ajax ou suite à une redirection.

    Le problème vient du code pour initialiser la session :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ( empty(session_id()) ) session_start();
    -> Ici l'instruction session_start() ne sera pas exécutée. La fonction session_id() va retourner une chaine vide, la condition dans le if sera donc fausse et la session ne sera donc pas initialisée.

    Supprime simplement le if (empty(session_id())) et met directement l'instruction session_start() au début de ton code php :

  8. #8
    Membre actif
    Inscrit en
    Janvier 2003
    Messages
    604
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 604
    Points : 247
    Points
    247
    Par défaut
    Merci, super cela marche.

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 01/12/2008, 18h24
  2. lancement d'un script bash depuis une page php (dans un terminal)
    Par klampke dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 3
    Dernier message: 26/11/2008, 02h41
  3. Appel du script PHP depuis une page HTML
    Par PHILIPPE59 dans le forum Langage
    Réponses: 13
    Dernier message: 25/11/2008, 15h46
  4. Réponses: 6
    Dernier message: 12/08/2007, 11h10
  5. Réponses: 3
    Dernier message: 09/07/2007, 16h37

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