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 :

Pseudo-Frames et Session


Sujet :

Langage PHP

  1. #1
    Membre �clair� Avatar de Pahcixam
    Profil pro
    D�veloppeur Web
    Inscrit en
    Avril 2006
    Messages
    289
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur Web

    Informations forums :
    Inscription : Avril 2006
    Messages : 289
    Par d�faut Pseudo-Frames et Session
    Bonjour,

    je travail actuelement sur un site en pseudo frame.

    Mon probl�me est que avant d'acceder au site en pseudo-frame, il faut s'identifi�.

    J'ai donc r�lais� un script. Je peut m'inscire, me connecter pas de probl�me.

    Dans tout les script de mon site j'utilise ensuite l'id du joueurs que j'ai pass� en variable de sessions comme ceci: $_SESSION['id']. Seulement, je pense que c'est du au pseudo frame, cette varaible est toujours nulle.

    J'ai donc essay� de mettre des session_start dans tout mes fichiers, en les pla�ant avant la balise body, mais � chaque fois j'ai une notice comme quoi une session existe d�j� et que la nouvelle sera ignor�e.

    Donc ma session existe bien mais alors pourquoi mes variable de sessions sont toujours vide.

    Est-ce qu'il existe une astuce pour que pseudo-frame et sessions fassent bon m�nage ?

    Merci d'avance

  2. #2
    R�dactrice
    Avatar de xave
    Femme Profil pro
    D�veloppeur Web
    Inscrit en
    Mai 2002
    Messages
    871
    D�tails du profil
    Informations personnelles :
    Sexe : Femme
    �ge : 47
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activit� : D�veloppeur Web

    Informations forums :
    Inscription : Mai 2002
    Messages : 871
    Par d�faut
    Comment tu sauvegardes tes valeurs dans la session?

    Pseudo frame et session font bon m�nage!

  3. #3
    Membre �clair� Avatar de Pahcixam
    Profil pro
    D�veloppeur Web
    Inscrit en
    Avril 2006
    Messages
    289
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur Web

    Informations forums :
    Inscription : Avril 2006
    Messages : 289
    Par d�faut
    Bin pour �tre plus simple, voil� l'initialisation de ma session:

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    session_start();
    $_SESSION['login'] = $_POST['login'];
    $_SESSION['id'] = $data['id'];
    Et ensuite je fait un header pour rediriger vers la page de jeu comme ceci:

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    header('Location: play.php');
    exit();

  4. #4
    Membre �clair� Avatar de nicoaix
    Homme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    D�cembre 2004
    Messages
    571
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 50
    Localisation : France, Paris (�le de France)

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : D�cembre 2004
    Messages : 571
    Par d�faut
    As-tu v�rifi� la valeur retourn�e par $data['id']?

  5. #5
    Membre Expert

    Homme Profil pro
    Expert PHP
    Inscrit en
    Novembre 2004
    Messages
    2 127
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activit� : Expert PHP
    Secteur : High Tech - Multim�dia et Internet

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 127
    Par d�faut
    et y a quelque chose dans $data['id']; ?
    tu fais bien un session_start au d�but des autres pages ?
    tu as register_globals � ON ou OFF ?

  6. #6
    Membre �clair� Avatar de Pahcixam
    Profil pro
    D�veloppeur Web
    Inscrit en
    Avril 2006
    Messages
    289
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur Web

    Informations forums :
    Inscription : Avril 2006
    Messages : 289
    Par d�faut
    Alors register_global est a on

    Et oui, la valeur renvoy�e par Mysql est bonne.

    EDIT 1: Si je rajoute des session_start au debut des autre page, j'ai le probl�me que j'ai expliqu� en haut.

  7. #7
    Membre �clair� Avatar de nicoaix
    Homme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    D�cembre 2004
    Messages
    571
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 50
    Localisation : France, Paris (�le de France)

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : D�cembre 2004
    Messages : 571
    Par d�faut
    Pourrais-tu nous montrer le code de ton script qui pose probl�me?

  8. #8
    Membre Expert

    Homme Profil pro
    Expert PHP
    Inscrit en
    Novembre 2004
    Messages
    2 127
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activit� : Expert PHP
    Secteur : High Tech - Multim�dia et Internet

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 127
    Par d�faut
    juste si register_global est a ON, $id = $_SESSION[id], donc si a un moment tu utilises $id ou autre, ta variable de session va disparaitre.

  9. #9
    Membre �clair� Avatar de Pahcixam
    Profil pro
    D�veloppeur Web
    Inscrit en
    Avril 2006
    Messages
    289
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur Web

    Informations forums :
    Inscription : Avril 2006
    Messages : 289
    Par d�faut
    Oui sans probl�me, mais en fait, c'est tout les script ou j'utilise une variable du type $_SESSION['login'].

    Voici un exemple:

    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
    27
    28
    29
    30
    31
    32
    <?php
    // on teste si notre paramètre existe bien et qu'il n'est pas vide
    if (!isset($_GET['id_message']) || empty($_GET['id_message'])) {
        echo 'Aucun message reconnu.';
    }
    else {
    	require_once("include/config.php");
        $base = mysql_connect ($serveur, $username, $password); 
        mysql_select_db ($nombase, $base);
     
        // on prépare une requete SQL selectionnant la date, le titre et l'expediteur du message que l'on souhaite lire, tout en prenant soin de vérifier que le message appartient bien au membre connecté
        $sql = 'SELECT titre, date, message, user.login as expediteur FROM messages, user WHERE id_destinataire="'.$_SESSION['id'].'" AND id_expediteur=user.id AND messages.id="'.$_GET['id_message'].'"';
        // on lance cette requete SQL à MySQL
        $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
        $nb = mysql_num_rows($req);
     
        if ($nb == 0) {
            echo 'Aucun message reconnu.';
        }
        else {
            // si le message a été trouvé, on l'affiche
            $data = mysql_fetch_array($req);
            echo $data['date'] , ' - ' , stripslashes(htmlentities(trim($data['titre']))) , '</a> [ Message de ' , stripslashes(htmlentities(trim($data['expediteur']))) , ' ]<br /><br />';
            echo nl2br(stripslashes(htmlentities(trim($data['message']))));
     
            // on affiche également un lien permettant de supprimer ce message de la boite de réception
            echo '<br /><br /><a href="supprimer.php?id_message=' , $_GET['id_message'] , '">Supprimer ce message</a>';
        }
        mysql_free_result($req);
        mysql_close();
    }
    ?>
    EDIT 1:

    Je viens de mettre register_globals � off en local et j'ai le m�me probl�me.

  10. #10
    Membre �clair� Avatar de nicoaix
    Homme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    D�cembre 2004
    Messages
    571
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 50
    Localisation : France, Paris (�le de France)

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : D�cembre 2004
    Messages : 571
    Par d�faut
    Si tu ne mets pas de session_start() il ne pourra pas r�cup�rer la valeur de $_session['id'] ou des autres variables de session.
    Comment d�clares-tu tes variables de session?

  11. #11
    Membre �clair� Avatar de Pahcixam
    Profil pro
    D�veloppeur Web
    Inscrit en
    Avril 2006
    Messages
    289
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur Web

    Informations forums :
    Inscription : Avril 2006
    Messages : 289
    Par d�faut
    En fait je ne met pas de session_start() car comme je l'ai dit plus haut, j'utilise des pseudo frame et qui si je le remet, j'ai l'erreur suivante:

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    [Fri Jul 07 17:43:35 2006] [error] [client 127.0.0.1] PHP Notice:  A session had already been started - ignoring session_start() in E:\\www\\medievalheros\\max\\profil.php on line 4, referer: http://127.0.0.1/max/play.php
    Mes variable sont d�clar� dans le fichier de connexion, de cette mani�re:

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    $_SESSION['id'] = $_POST['id'];

  12. #12
    Membre Expert

    Homme Profil pro
    Expert PHP
    Inscrit en
    Novembre 2004
    Messages
    2 127
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activit� : Expert PHP
    Secteur : High Tech - Multim�dia et Internet

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 127
    Par d�faut
    c'est pas pour t'embeter, mais bon les frames c'est pas top.

    Apres je vois pas trop d'ou vient ton probleme, mais tu peux faire un print_r($_SESSION); juste apres ton session_start(); et voir quand elles disparaissent ...

  13. #13
    Membre �clair� Avatar de Pahcixam
    Profil pro
    D�veloppeur Web
    Inscrit en
    Avril 2006
    Messages
    289
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur Web

    Informations forums :
    Inscription : Avril 2006
    Messages : 289
    Par d�faut
    Bon et bien j'ai fait ce que tu m'a dit dans toute mes pages et � chaque fois j'obtient �a:

    Array ( [login] => Pahcixam [id] => 1 )

    Donc je comprend plus,

    Mes valeurs sont bien l�

    Alors pourquoi mes requ�tes merdent ?

  14. #14
    Membre Expert

    Homme Profil pro
    Expert PHP
    Inscrit en
    Novembre 2004
    Messages
    2 127
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activit� : Expert PHP
    Secteur : High Tech - Multim�dia et Internet

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 127
    Par d�faut
    Ca c'est une autre histoire !!

    Tein tein teinnnnnnnnn !!! (petite note de musique ...)

  15. #15
    Membre �clair� Avatar de Pahcixam
    Profil pro
    D�veloppeur Web
    Inscrit en
    Avril 2006
    Messages
    289
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur Web

    Informations forums :
    Inscription : Avril 2006
    Messages : 289
    Par d�faut
    Par exemple, dans ce code l�, le print_r me renvoi ce que j'ai dit tout � l'heure, donc j'ai bien mes valeur de session.

    Et � l'execution de ce code:

    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    <?php
     
    print_r($_SESSION);
     
    ?>
    <?php
     
    if (isset($_POST['go']) && $_POST['go'] == 'Envoyer') {
        if (empty($_POST['destinataire']) || empty($_POST['titre']) || empty($_POST['message'])) {
            $erreur = 'Au moins un des champs est vide.';
        }
        else {
            require_once("include/config.php");
    		$base = mysql_connect ($serveur, $username, $password); 
    		mysql_select_db ($nombase, $base);
     
            // si tout a été bien rempli, on insère le message dans notre table SQL
            $sql = 'INSERT INTO messages VALUES("", "'.$_SESSION['id'].'", "'.$_POST['destinataire'].'", "'.date("Y-m-d H:i:s").'", "'.addslashes($_POST['titre']).'", "'.addslashes($_POST['message']).'")';
            mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error());
     
            mysql_close();
     
    		header('Location: play.php?page=messagerie');
            exit();
        }
    }
    ?>
     
    <html>
    <head>
    <title>Espace membre</title>
    </head>
    <body>
    Envoyer un message :<br /><br />
     
    <?php
    require_once("include/config.php");
    $base = mysql_connect ($serveur, $username, $password); 
    mysql_select_db ($nombase, $base);
     
    // on prépare une requete SQL selectionnant tous les login des membres du site en prenant soin de ne pas selectionner notre propre login, le tout, servant à alimenter le menu déroulant spécifiant le destinataire du message
    $sql = 'SELECT user.login as nom_destinataire, user.id as id_destinataire FROM user WHERE id <> "'.$_SESSION['id'].'" ORDER BY login ASC';
    // on lance notre requete SQL
    $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
    $nb = mysql_num_rows ($req);
     
    if ($nb == 0) {
        // si aucun membre n'a été trouvé, on affiche tout simplement aucun formulaire
        echo 'Vous êtes le seul membre inscrit.';
    }
    else {
        // si au moins un membre qui n'est pas nous même a été trouvé, on affiche le formulaire d'envoie de message
        ?>
        <form action="envoyer.php" method="post">
        Pour : <select name="destinataire">
        <?php
        // on alimente le menu déroulant avec les login des différents membres du site
        while ($data = mysql_fetch_array($req)) {
            echo '<option value="' , $data['id_destinataire'] , '">' , stripslashes(htmlentities(trim($data['nom_destinataire']))) , '</option>';
        }
        ?>
        </select><br />
        Titre : <input type="text" name="titre" value="<?php if (isset($_POST['titre'])) echo stripslashes(htmlentities(trim($_POST['titre']))); ?>"><br />
        Message : <textarea name="message"><?php if (isset($_POST['message'])) echo stripslashes(htmlentities(trim($_POST['message']))); ?></textarea><br />
        <input type="submit" name="go" value="Envoyer">
        </form>
        <?php
    }
    mysql_free_result($req);
    mysql_close();
    ?>
    </select>
     
    <?php
    // si une erreur est survenue lors de la soumission du formulaire, on l'affiche
    if (isset($erreur)) echo '<br /><br />',$erreur;
    ?>
    Ma requ�te sql ressemble � �a:

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    INSERT INTO messages VALUES("", "", "2", "2006-07-07 17:58:22", "titre", "test message")
    La deuxi�me valeur est vide !

    Je comprend pas ...

  16. #16
    Membre �clair� Avatar de nicoaix
    Homme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    D�cembre 2004
    Messages
    571
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 50
    Localisation : France, Paris (�le de France)

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : D�cembre 2004
    Messages : 571
    Par d�faut
    Je pense que le probl�me vient de l'architecture de ton application. Mais comme je ne sais pas comment elle est j'ai un peu de mal � trouver une direction de recherche.

  17. #17
    Membre �clair� Avatar de nicoaix
    Homme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    D�cembre 2004
    Messages
    571
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 50
    Localisation : France, Paris (�le de France)

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : D�cembre 2004
    Messages : 571
    Par d�faut
    Dans ta requ�te essais d'inverser les simples cotes et les doubles cotes:
    Remplace:
    $sql = 'SELECT user.login as nom_destinataire, user.id as id_destinataire FROM user WHERE id <> "'.$_SESSION['id'].'" ORDER BY login ASC';
    Par:
    $sql = "SELECT user.login as nom_destinataire, user.id as id_destinataire FROM user WHERE id <> ".$_SESSION["id"]." ORDER BY login ASC";

  18. #18
    Membre �clair� Avatar de Pahcixam
    Profil pro
    D�veloppeur Web
    Inscrit en
    Avril 2006
    Messages
    289
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur Web

    Informations forums :
    Inscription : Avril 2006
    Messages : 289
    Par d�faut
    Bin, voil�, �a c'est mon fichier play.php. L'entete le pied et le menu sont en html pur.

    Et puis sa appel les page, comme envoyer.php de mon post pr�c�dent.

    play.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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
     
    <?php
    session_start();
    if (!isset($_SESSION['login'])) {
        header ('Location: index.php');
        exit();
    }
    ?>
    <div class="entete" >
    <?php
      include('header.php');  // Nous appelons l'entete du site
    ?>
    </div>
    <table border=0>
    <tr><td width=200px>
    <div class="colonneGauche" >
    <?php
      include('menu.htm');   // Nous appelons notre menu
    ?>
    </div>
    </td><td width=824px>
    <div class="colonneDroite">
    <?php
     
      // On définit le tableau contenant les pages autorisées
      // ----------------------------------------------------
      $pageOK = array('news' => 'news.php',
                      'accueil' => 'accueil.php',
    				  'profil' => 'profil.php',
    				  'ma_vue' => 'vue.php',
    				  'equipement' => 'equipement.php',
    				  'messagerie' => 'messagerie.php',
    				  'envoyer' => 'envoyer.php',
    				  'lire' => 'lire.php',
    				  'supprimer' => 'supprimer.php');
     
      // On teste que le paramètre d'url existe et qu'il est bien autorisé
      // -----------------------------------------------------------------
      if ( (isset($_GET['page'])) && (isset($pageOK[$_GET['page']])) ) {
        include($pageOK[$_GET['page']]);   // Nous appelons le contenu central de la page
      } else {
        include('accueil.php');   // Page par défaut quant elle n'existe pas dans le tableau
      }
     
    ?>
    </div> 
    </td></tr></table>
    <div class="pied">
    <?php
      include('footer.php');   // Nous appelons le pied de page
    ?>
    </div>
    EDIT 1: pour cette requ�te l� �a marche bien, c'est �tonnant quand m�me, voil� ce qu'elle me retourne dans les deux cas:

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    SELECT user.login as nom_destinataire, user.id as id_destinataire FROM user WHERE id <> 1 ORDER BY login ASC
    Ya de quoi s'�craser la t�te contre le mur

  19. #19
    Membre �clair� Avatar de nicoaix
    Homme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    D�cembre 2004
    Messages
    571
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 50
    Localisation : France, Paris (�le de France)

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : D�cembre 2004
    Messages : 571
    Par d�faut
    Citation Envoy� par Pahcixam
    EDIT 1: pour cette requ�te l� �a marche bien
    Pour laquelle? Avec les doubles cotes ou avec les simples cotes?

  20. #20
    Membre �clair� Avatar de Pahcixam
    Profil pro
    D�veloppeur Web
    Inscrit en
    Avril 2006
    Messages
    289
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur Web

    Informations forums :
    Inscription : Avril 2006
    Messages : 289
    Par d�faut
    Avec les double et les simple. J'ai essay� de faire �a en debut de fichier:

    $idenvoyeur = $_SESSION['id']

    et de remplacer dans ma requ�te

    Toujours le m�me probl�me.

    Je vois vraiment pas pourquoi il veut pas !

+ R�pondre � la discussion
Cette discussion est r�solue.
Page 1 sur 2 12 Derni�reDerni�re

Discussions similaires

  1. Probl�me de SESSION avec les "pseudo-frame" PHP
    Par kergad dans le forum Langage
    R�ponses: 10
    Dernier message: 24/05/2008, 01h12
  2. Variable de sessions qui disparaissent (pseudo-frames)
    Par lecharcutierdelinux dans le forum Langage
    R�ponses: 11
    Dernier message: 09/02/2007, 22h25
  3. Pseudo-frame et index
    Par MYster dans le forum Langage
    R�ponses: 3
    Dernier message: 09/11/2005, 18h48
  4. Pseudo frames
    Par virtuadrack dans le forum Langage
    R�ponses: 9
    Dernier message: 23/10/2005, 14h23
  5. [Syst�me] question bete sur les pseudo frames
    Par balou dans le forum Langage
    R�ponses: 5
    Dernier message: 12/10/2005, 13h11

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