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 :

[Cookies] <object data> et variable de session


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 82
    Points : 87
    Points
    87
    Par défaut [Cookies] <object data> et variable de session
    Bonjour à tous,

    dans une page php, j'utilise un script qui teste l'existence d'un fichier html
    si le fichier existe la page en tient compte et insère le contenu dans un <objet data>

    voici ma page b.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
    <?php
     
     session_name('sid');
     session_start();
     $session = session_name() . '=' . session_id();
     
    /*
    si la variable de session login n'existe pas cela siginifie que le visiteur
    n'a pas de session ouverte, il n'est donc pas logué ni autorisé à
    acceder à l'espace membres
    */
    if(!isset($_SESSION['login'])) {
    //  echo 'Vous n\'êtes pas autorisé à acceder à cette page';
    $_SESSION['page']='b.php';
      header('Location: login.php');
      exit;
    }
     
    ?>
     
    <p>blabla html</p>
     
    <?php
    $path='data/data-b.htm';
    if (is_file($path)) {
    ?>
     
    <P align="center">
    <object data="data/data-b.htm" width="98%" height="280">
        </object></p>
    <?php
    } else {
    ?>
                 <p>bla bla html</p>
    <?php
    }
    include 'include/footer.php';
    ?>
    Vous constatez qu'il s'agit de pages protégées apartenant à un espace membre, une fois identifié, le nom et d'autres informations de l'utilisateur sont stockés dans des variables de session.

    (extrait du fichier login.php)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        $_SESSION['login']     = $login;
        $_SESSION['mail']      = $user['mail'];
        $_SESSION['nom']       = $user['nom'];
        $_SESSION['prenom']    = $user['prenom'];
        $_SESSION['telephone'] = $user['telephone'];

    un peu plus bas, je teste la présence du fichier html

    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
    <table border="0" cellspacing="0" bordercolor="#B40000" cellpadding="0">
        <tr bgcolor="#F4DEE0">
            <td width="20" align="center" valign="middle">
            </td>
            <td width="180">
                <p align="center">0702PAUI01</p>
            </td>
            <td width="180">
                <p align="center"><img src="images/clig.gif" width="10" height="10" border="0"></p>
            </td>
            <td width="180">
                <p align="center">400</p>
            </td>
            <td width="180">
                <p align="center">2004</p>
            </td>
            <td width="180">
                <p align="center">12.5</p>
            </td>
            <td width="208">
                <p align="center">5800</p>
            </td>
            <td width="208">
                <p align="center"></p>
            </td>
            <td width="20" align="center" valign="middle">
                <p align="center"><a href="../ask.php?lot=0702PAUI00" target="parent"><img src="images/info.gif" width="16" height="16" border="0"></a></p>
            </td>
          </tr>
        <tr bgcolor="#F4DEE0">
            <td>
            </td>
            <td colspan="7">
                <p align="left">CHATEAU HAUT MILON</p>
            </td>
            <td>
            </td>
          </tr>
      </table>
    que j'inclus si présent sur le disque

    vous remarquerez que ce code contient :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <a href="../ask.php?lot=0702PAUI00" ...
    voici le code de la page ask.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
    53
    54
    55
    56
    57
    58
    59
    60
    61
    <?php
     
    session_name('sid');
    session_start();
    $session = session_name() . '=' . session_id();
     
    if(isset($_GET) && !empty($_GET['lot'])) {
      extract($_GET);
    	}
     
    	if (!isset($_SESSION['mail'])) {
    		$sender	='';
    		$nom	='';
    		$prenom	='';
    		$tel	='';
     
    	} else {
    		$sender	=$_SESSION['mail'];
    		$nom	=$_SESSION['nom'];
    		$prenom	=$_SESSION['prenom'];
    		$tel	=$_SESSION['telephone'];
    	}
     
        $tmp = $lot;
        $lot=htmlspecialchars($tmp, ENT_QUOTES);
        //$lot = preg_replace( "/[^0-9]/", "", $tmp );
     
        if (isset($lot) && $lot<>'') {
     
    	$to="admin@site.com";
    	$from = $sender;
    	$subject = "[i " . $lot ." ]";
     
        // Pour envoyer un mail HTML, l'en-tête Content-type doit être défini
    	$headers  = 'MIME-Version: 1.0' . "\r\n";
        $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
     
        // En-têtes additionnels
        $headers .= 'To: ' . $to . "\r\n";
        $headers .= 'From: ' . $from . "\r\n";
        $headers .= 'Cc: ' . $cc . "\r\n";
        $headers .= 'Bcc: ' . $bcc . "\r\n";
     
     
        if (!empty($sender)) {
             $message = 'blabla'
     
         //echo $message;
         // Envoi au bureau
         mail($to, $subject, $message, $headers);
     
        	// message
     
     
     
         echo $message;
         }
     
        }
     
    ?>
    j'ai enlevé le code html pour plus de lisibilité.

    Mon problème est le suivant.
    sous IE, version 6.0.2900.2180.xpsp2
    les variables de session ne sont pas transmises à la page ask.php

    par contre sur un IE plus ancien Version: 6.0.2800.1990.xpsp2 et sous firefox, je n'ai aucun problèmes de fonctionnement.

    le probleme vient t'il de la version d'IE ?
    dois-je reformuler mon code ?
    si oui, comment obtenir le même resultat que mon <object data> ?

    Petite précision,
    PHP V 4.4.4

    @++

  2. #2
    Membre éprouvé
    Avatar de Zenol
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2004
    Messages
    812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2004
    Messages : 812
    Points : 1 054
    Points
    1 054
    Par défaut
    Je ne doit pas être très réveiller ce soir, mais quel partie du code corespodn à la page "ask.php", et quel autre partie est sensser y envoyer l'utilisateur ?

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 82
    Points : 87
    Points
    87
    Par défaut
    Merci de t'interesser à mon problème.

    Pour essayer d'éclaircir la soupe, j'ai modifié mon premier post pour mettre l'intégralité des fichier b.php et ask.php

    (Mis a part le code de présentation html qui, à mon sens n'a pas grand interêt)

    Peut être ainsi, mon code est t'il plus lisible !

    (soyez indulgent, c'est mon premier site en php )

    @++

  4. #4
    Membre éprouvé
    Avatar de Zenol
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2004
    Messages
    812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2004
    Messages : 812
    Points : 1 054
    Points
    1 054
    Par défaut
    Le problème, c'est que je n'arive pas à voir quel est ton problème, et pourquoi tu pense que les variables de session ne sont pas trensmisent. Enfin je ne voi aps trop le raport avec ton <object data>

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 82
    Points : 87
    Points
    87
    Par défaut
    Bonjour,
    Pour être plus précis, le site en question offre des informations sur l'achat de vin en vrac (des lots).
    lorsqu'un utilisateur est intéréssé par un lot, il lui suffit de cliquer sur une image (contenue dans le code html inséré en 'object data') pour déclancher l'envoi d'un email (declenchement de ask.php)
    suite à cet envoi nous prenons contact avec l'utilisateur pour engager une transaction sur la vente du lot.

    et un utilisateur s'est plein que je ne répondais pas à ses demandes. Je me suis déplacé chez lui, et effectivement, lors du click sur l'image, la page ask.php s'ouvre mais elle reste blanche et aucun email n'est envoyé !

    tout le reste du site fonctionne parfaitement.

    j'ai donc relevé sa config et en regardant mon code, je me suis dit que le pb venait peut être du fait d'utiliser un <object data>

    je viens juste d'apprendre le PHP et mes connaissances sont encore limitée !

    et le 'bug' se produit à chaque fois chez ce client et aussi chez un autre qui à la même version d'IE. Pour essayer d'isoler le 'bug' je suis en train de coder une page complête en dur (sans includes et sans <object data> pour voir si le pb existe toujours).

    qu'en pense tu ?

    @++

  6. #6
    Membre éprouvé
    Avatar de Zenol
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2004
    Messages
    812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2004
    Messages : 812
    Points : 1 054
    Points
    1 054
    Par défaut
    Je pensse que le problème est bien cette object data. Ne serait'il pas plus simple d'utiliser un simple href?
    Quoi qu'il en soit, le problème ne peut pas provenir du code PHP, qui s'éxécute coté serveur et non coté client.
    (A moin que l'object data permête d'intègrer une page HTML dans une autre page? Si c'est le cas il serait beaucoup plus simple d'inclure le code en dur. En plus, je me demande si c'est bien standard tout ca...)

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 82
    Points : 87
    Points
    87
    Par défaut
    Citation Envoyé par JC_Master
    En plus, je me demande si c'est bien standard tout ca...)
    hic !

    Je suis à peu prés sur que non mais c'est le seul moyen que j'ai trouvé pour avoir une fenêtre défilante dans un cadre avec des dimensions précises.

    voir ci-dessous :



    sinon, je vais coder le contenu directement et c'est sur la page que j'aurais un ascenseur. (mais bon, j'aurais bien aimé garder ma mise en page)

    si vous avez une solution pour le même résultat, et en respectant les normes, je suis preneur !

    @++

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 82
    Points : 87
    Points
    87
    Par défaut cookies et session
    C'a y est !
    je viens de me rendre compte que le serveur enregistre l'id de session dans un cookies !!!!
    comment est-ce possible

    qu'est ce que je peux faire ?!

    est-ce que ça vient du fait que je renomme la session en 'sid' ?

    @++

  9. #9
    Membre éprouvé
    Avatar de Zenol
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2004
    Messages
    812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2004
    Messages : 812
    Points : 1 054
    Points
    1 054
    Par défaut
    Peutètre... peutètre pas, je n'ai pas fait de PHP depuis un bon moment (labs de temp dont l'unitée est le mois :p)

    Par contre pour faire défiler un texte à l'intérieur d'une page de manière standart, rien de plus simple ^^'

    Il sufit de mêtre le contenu à faire défiler dnas une balise de type bloc (Un <div> suffit) et de lui assigner avec CSS un style (De mémoire c'est overflow:auto

    Effin, il me semblais que les variables de cession étaient toujour stoquer sous forme de cookie à moin de préciser le contraire de manière explicite (mais je ne sais plus comment)

    Edit : http://fr3.php.net/manual/fr/ref.ses...sion.idpassing
    Aparement les cookie sont envoiller quoi qu'il arive, mais il est possible de passer le nom de la session dans l'url pour plus de sécuritée.

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 82
    Points : 87
    Points
    87
    Par défaut
    Merci JC_MASTER,

    En fait, je viens de recoder mes pages pour passer la session de façon explicite dans l'url, et ça fonctionne !

    et même en bloquant les cookies !!!!!!!

    Conclusion, le serveur essaye de nous coller un cookies si possible et sinon il faut passer l'ID de session par l'url et le tour est joué !

    Merci encore à tous pour votre aide, et votre pugnacité....

    @++

    PS : http://php.developpez.com/cours/sessions/

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

Discussions similaires

  1. [Cookies] Variable de Session capricieuse :/
    Par nikospkrk dans le forum Langage
    Réponses: 8
    Dernier message: 19/08/2006, 13h11
  2. Réponses: 2
    Dernier message: 29/06/2006, 09h26
  3. Réponses: 4
    Dernier message: 20/06/2006, 13h12
  4. Réponses: 1
    Dernier message: 07/06/2006, 17h14
  5. [Cookies] Variable de session + IE
    Par Phenomenium dans le forum Langage
    Réponses: 4
    Dernier message: 24/03/2006, 11h28

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