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 :

Session et Javascript


Sujet :

Langage PHP

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 42
    Points : 29
    Points
    29
    Par défaut Session et Javascript
    bonjour a tous

    voila j'ai un petit probleme :p

    j'explique un peu ce qui va :
    je valide mon formulaire, la page login.php est appelée via javascript

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    http.open('get', 'ajax/php/login.php?email='+email+'&psw='+psw+'&nocache = '+nocache);
    jusque la pas de problème

    la page login verifie et la si tout est ok, on me crée mes session
    la pareil c'est ok
    puisque je vérifie via le onreadystatechange que la session existe (via un echo $_SESSION['login'] dans mon login.php, que j'affiche avec un alert

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if (http.readyState == 4) {
    alert(http.responseText)
    }
    qui m'affiche bien le login renvoyé en echo

    voici donc le problème :p

    une fois les sessions créées, toujours via javascript, je vide un div, et je le rempli avec un affiche_Session.php (grossomodo ^^)
    qui lui me dis si $_SESSION['login'] existe

    or ! (oui le voila le problème)
    voici plusieurs bout de codes que j'ai testés, qui marche pas, ou qui marchent sans marcher :p

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if (isset($_SESSION['login'])) {
    	echo "existe";
    } else {
    	echo "existe pas";
    }
    m'affiche toujours que la session n'existe pas


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    session_start();
    if (isset($_SESSION['login'])) {
    	echo "existe";
    } else {
    	echo "existe pas";
    }
    la quand la session existe, bah c'est cool sa me dis que sa existe (et inversement) sauf que j'ai l'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent
    qui s'invite a la fête

    comment régler ce problème ?
    il m'enerve

    merci d'avance ^^

  2. #2
    Rédacteur
    Avatar de marcha
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2003
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 571
    Points : 2 351
    Points
    2 351
    Par défaut
    Salut,

    Php envoie les header http de la réponse sitôt qu'il doit envoyer le premier
    caractères du contenu de la page (normal, puisqu'en http, le contenu se
    situe(séparé d'une ligne vide) après les en-têtes.

    Le cookie de session figure dans les en-têtes, donc il n'est pas possible
    de faire un session_start après qu'un seul byte de contenu a été émis.

    Un problème courant c'est un espace avant l'ouverture du tag php <?php

    Vérifie déjà ça.
    Si ton code fait plus d'une ligne, c'est que tu as mal choisi ton langage !

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 42
    Points : 29
    Points
    29
    Par défaut
    cette page est appelée pour remplir un div
    il faudrai en fait que je recharge totalement la page pour pouvoir bien jouer sur les en tetes alors ?

  4. #4
    Rédacteur
    Avatar de marcha
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2003
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 571
    Points : 2 351
    Points
    2 351
    Par défaut
    non, ce n'est pas le problème, même si tu ne retourne qu'un fragment d'html
    est-ce que tu peux poster le code php complet de cette page ?
    Si ton code fait plus d'une ligne, c'est que tu as mal choisi ton langage !

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 42
    Points : 29
    Points
    29
    Par défaut
    euh oui mais il n'y a que sa :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?
    if (!isset($_SESSION['login'])) session_start();
     
    if (isset($_SESSION['login'])) {
    	echo "oui";
    } else {
    	echo "non";
    }
    ?>
    et cette page est utilisée pour remplir un <div>

    le div est rempli de cette façon

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    function charger_page(page) {
    	document.getElementById('corps_A').innerHTML = "<div id=\"zone_ident\"></div>";
    	document.getElementById('zone_ident').innerHTML = "<center><img src=\"images/spinner.gif\" /><br />Chargement...<br /><br /></center>";
    	http.open('get', page + '.php'); // ici accueil.php donc
    	http.onreadystatechange = charger_pageReply;
    	http.send(null);
    }
     
    function charger_pageReply() {
    	var response = http.responseText;
    	document.getElementById('corps_A').innerHTML = response;
    }

  6. #6
    Rédacteur
    Avatar de marcha
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2003
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 571
    Points : 2 351
    Points
    2 351
    Par défaut
    Séparons les problèmes :-) que se passe-t-il quand tu tappe l'url
    de la page php directement depuis le navigateur ?

    tu as le message d'erreur "headers allready sent" ?
    Si ton code fait plus d'une ligne, c'est que tu as mal choisi ton langage !

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 42
    Points : 29
    Points
    29
    Par défaut
    oui j'ai aussi ce message quand je vais juste sur cette page
    alors qu'il n'y a rien de plus que le code que j'ai montré

  8. #8
    Rédacteur
    Avatar de marcha
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2003
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 571
    Points : 2 351
    Points
    2 351
    Par défaut
    Bon dans ce cas il faudrait vérifier si il n'y a pas un BOM (Byte Order Mark)
    en début de fichier. Voire ici (puis cherche BOM dans le texte)

    J'ai pu observer que dreamweaver utilise l'encodage UTF-16 pour sauvegarder
    ses fichiers (dans des circonstances exacts que j'ignore car je l'utilise pas)

    Si tu utilise dreamweaver (ou autre IDE du style) alors essaye de regarder ton fichier avec un viewer
    hexa (NotePad++ fera l'affaire) et observe si il n'y a pas un FF FE ou FE FF avant
    même le tag d'ouverture php <?
    Si ton code fait plus d'une ligne, c'est que tu as mal choisi ton langage !

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 42
    Points : 29
    Points
    29
    Par défaut
    j'ai ré enregistré ma page en "UTF-8 (sans BOM)" avec notepadd++

    le problème a disparu

    j'me coucherai une fois de plus la tete un peu plus pleine :p


    merci beaucoup pour ton aide

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

Discussions similaires

  1. [PHP-JS] variable session Php + javascript
    Par Panther dans le forum Langage
    Réponses: 2
    Dernier message: 12/02/2008, 15h29
  2. variable de session et javascript
    Par tommey dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 22/08/2006, 17h28
  3. Les sessions en javascript; XML sous FF; Aide pour un projet
    Par FremyCompany dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 15/05/2006, 17h59
  4. [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
  5. 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

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