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 :

Perte de session PHP lors de requete Ajax [PHP 5.3]


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Inscrit en
    Juillet 2011
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Juillet 2011
    Messages : 21
    Points : 27
    Points
    27
    Par défaut Perte de session PHP lors de requete Ajax
    Bonjour,

    J'ai un petit problème et à force de plancher dessus je commence à m'arracher les cheveux. Comme je vais finir par ne plus en avoir, je viens poser la question histoire d'arracher les cheveux des autres :p.

    Contexte: Ubuntu - apache - php - prototype.js (et mysql mais on s'en fout).

    Fonctionalité qui merde:
    Page php -> objet en session -> requete ajax vers autre PHP -> retour de valeur
    (contenue dans la session php, vu que je teste ça. Ca a l'air de ne servir à rien, mais je m'en sers par la suite pour savoir ce que je dois chercher en base comme données à afficher à l'utilisateur).

    Etat initial (de tout naif quand je pensais que ça marchait tout seul):

    - session_start();
    - mise en session des valeurs par défaut (compte invité, la donnée s'affiche plus bas dans une div si je veux vérifier).
    - sur click -> requete ajax vers un script php (qui pour ce test, renvoit juste la valeur mise en session)
    - Ledit script fait un echo de la valeur (là j'ai déjà perdu la session je pense).
    - Aucune valeur récupérée en retour.

    Correction 1:
    - Rajout de session_start(); au début du script php distant (mais ça ne marche toujours pas).

    Correction 2 (là ça part en vrille de plus en plus):
    - sauvegarde du session id dans une variable globale javascript
    - requestHeaders: ['Set-Cookie', 'PHPSESSID=' + sid],
    Dans ma requete je vois bien (firebug) le Set-Cookie avec la bonne valeur, mais ça ne marche toujours pas. (note, le phpessid de la réponse est différente)

    Correction 3 (aussi nommée: "je m'enfonce"):
    - idem que 2, mais je passe le phpessid aussi en paramètre, puis je:
    - $sid = $_GET['sid']; header("Set-Cookie: PHPSESSID=".$sid);
    Le set-cookie est bon dans les 2 sens mais ça ne marche toujours pas, toujours pas accès à ma session...

    Corrections 4... 5... 6... etc (aussi nommé "le titanic")
    -A partir de là j'ai tenté des trucs plus ou moins débiles ou loufoques, mais on va avoir la clémence de ne pas le mentionner. L'arrachage de cheveux commence et je suis bloqué...


    Un peu d'aide pour un naufragé s'il vous plait?
    La je bloque complètement...


    N.B. ma variable session.cookie_path du php.ini est de base à /, ça m'a intrigué et je l'ai mise à /var/www/sessions (en créant le répertoire sessions) mais comme ça ne changeait rien, je l'ai remise à /.

    N.N.B. la dernière fois que j'ai vu du code php, c'était il y a 5 ans, donc je suis débutant, mais en général je comprends assez vite... Ouais bon sauf là quoi...

  2. #2
    Futur Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2011
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2011
    Messages : 10
    Points : 6
    Points
    6
    Par défaut
    Salut,

    Je n'ai pas tout compris à ton problème et j'ai carrément rien compris à ton script.
    Alors met une perruque et reprends ton souffle

    Le problèmes est bien le suivant, tu cherche à récupérer une variable en session via un appel Ajax ?
    As tu tenté le coup avec une variable simple (disons un string).

    Du genre :
    Index.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
     
    <?php
    session_start();
    $_SESSION['string'] = 'Ma chaine';
    ?>
    <script>
    //Je ne code pas en prototype, donc je te pose du jquery, la fonction est toute simple
    //Au clique sur le lien j'envoie un appel ajax à la page ajax.php et je fais une alert contenant le résultat sorti par la page ajax.php
    $(document).ready(function(){
      $('#ajax_click').click(function(){
        $.ajax({
           url: 'ajax.php',
           succes: function(d){
              alert(d);
           }
        });
      });
    });
    </script>
     
    <a href="#" id="click_ajax">Cliquer pour lancer l'appel Ajax</a>
    Fichier ajax.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <?php
    session_start();
    echo $_SESSION['string'];
    ?>
    Déjà si ce script ou son équivalent prototype déconne c'est qu'en effet tu dois avoir une mauvaise config serveur, si non l'erreur vient sûrement de toi.

    Autre technique, tape directement sur ton fichier php appelé en ajax (pour mon exemple ajax.php), si il te sort ta variable en session alors c'est ton appel ajax qui est foireux

    J'espère t'aider et pas troller ..

  3. #3
    Nouveau membre du Club
    Inscrit en
    Juillet 2011
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Juillet 2011
    Messages : 21
    Points : 27
    Points
    27
    Par défaut
    Désolé c’était le serveur qui déconnait...

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1
    Points : 3
    Points
    3
    Par défaut
    Bonjour,

    Quand tu dis que c'est le serveur qui déconnait, il y avait qque chose de mal configuré ? Pcque j'ai le même soucis et j'essaie de trouver ou est l'erreur.

    Merci,

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

Discussions similaires

  1. Perte de session PHP
    Par Geoffrey74 dans le forum Langage
    Réponses: 4
    Dernier message: 13/06/2015, 18h54
  2. Récupérer une variable php dans une requete ajax
    Par bedomon dans le forum jQuery
    Réponses: 2
    Dernier message: 30/09/2010, 14h16
  3. Réponses: 6
    Dernier message: 07/06/2010, 11h39
  4. Pertinance Session php our une requete
    Par epoc.01 dans le forum Langage
    Réponses: 1
    Dernier message: 16/12/2009, 11h51
  5. Perte de session PHP IIS6
    Par smazaudi dans le forum IIS
    Réponses: 1
    Dernier message: 29/10/2009, 16h27

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