Précédent   Forum des professionnels en informatique > PHP > Langage > Sessions
Sessions Forum d'entraide sur les sessions avec PHP. Avant de poster -> FAQ sessions, Cours sessions et Sources sécurité
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 23/01/2007, 18h18   #1
Membre régulier
 
Inscription : janvier 2007
Messages : 85
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 85
Points : 80
Points : 80
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 :
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 :
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 :
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 :
1
2
 
<a href="../ask.php?lot=0702PAUI00" ...
voici le code de la page ask.php
Code :
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

@++
p.legal est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/01/2007, 19h34   #2
Membre éprouvé
 
Avatar de Zenol
 
Jérémy Cochoy
Étudiant
Inscription : novembre 2004
Messages : 691
Détails du profil
Informations personnelles :
Nom : Jérémy Cochoy
Âge : 21

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : novembre 2004
Messages : 691
Points : 483
Points : 483
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 ?
Zenol est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/01/2007, 20h07   #3
Membre régulier
 
Inscription : janvier 2007
Messages : 85
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 85
Points : 80
Points : 80
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 )

@++
p.legal est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2007, 13h08   #4
Membre éprouvé
 
Avatar de Zenol
 
Jérémy Cochoy
Étudiant
Inscription : novembre 2004
Messages : 691
Détails du profil
Informations personnelles :
Nom : Jérémy Cochoy
Âge : 21

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : novembre 2004
Messages : 691
Points : 483
Points : 483
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>
Zenol est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2007, 14h02   #5
Membre régulier
 
Inscription : janvier 2007
Messages : 85
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 85
Points : 80
Points : 80
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 ?

@++
p.legal est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2007, 14h41   #6
Membre éprouvé
 
Avatar de Zenol
 
Jérémy Cochoy
Étudiant
Inscription : novembre 2004
Messages : 691
Détails du profil
Informations personnelles :
Nom : Jérémy Cochoy
Âge : 21

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : novembre 2004
Messages : 691
Points : 483
Points : 483
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...)
Zenol est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2007, 16h18   #7
Membre régulier
 
Inscription : janvier 2007
Messages : 85
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 85
Points : 80
Points : 80
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 !

@++
p.legal est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2007, 21h51   #8
Membre régulier
 
Inscription : janvier 2007
Messages : 85
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 85
Points : 80
Points : 80
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' ?

@++
p.legal est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2007, 22h25   #9
Membre éprouvé
 
Avatar de Zenol
 
Jérémy Cochoy
Étudiant
Inscription : novembre 2004
Messages : 691
Détails du profil
Informations personnelles :
Nom : Jérémy Cochoy
Âge : 21

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : novembre 2004
Messages : 691
Points : 483
Points : 483
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.
Zenol est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2007, 23h27   #10
Membre régulier
 
Inscription : janvier 2007
Messages : 85
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 85
Points : 80
Points : 80
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/
p.legal est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 00h35.


 
 
 
 
Partenaires

Hébergement Web