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] id session variable


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Décembre 2006
    Messages
    411
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 411
    Par défaut [Cookies] id session variable
    Bonjour,

    J'ai un problème avec les identifiants de session.
    Sur une page 1.php je fais un session_start() et je remplis la session avec le tableau $_SESSION et j'appelle un autre script 2.php dans lequel je remets un session_start() et je récupère les valeurs en sessions remplis auparavant et celles ci sont vides.
    Après de multiples tests, nous avons trouvé que l'id de la session avait changé entre la page 1.php et la page 2.php donc il semblerait que sur la page 2.php il recréé un fichier de session sur le serveur à vide.
    Le problème semble être encore plus complexe car quand le script est appelé de mon site tout semble fonctionner parfaitement et si un site extérieur l'appelle celà ne fonctionne plus sachant qu'il semble que sur firefox le problème n'est pas très présent mais présent tout le temps sur internet explorer.
    J'avais pensé à passer la valeur de session trans_id à 1 mais je ne sais pas si il y a un rapport.
    Merci d'avance de votre aide

  2. #2
    Expert confirmé
    Avatar de N1bus
    Homme Profil pro
    Dev. Web & OpenERP
    Inscrit en
    Janvier 2003
    Messages
    2 827
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Dev. Web & OpenERP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 827
    Par défaut
    Bonjour,

    On peut voir la partie de ta page2.php où tu récupères tes variables de session ?

  3. #3
    Membre éclairé
    Inscrit en
    Décembre 2006
    Messages
    411
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 411
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?php
    session_start();
    echo 'session id : '.session_id();
    echo 'id site : '.$_SESSION[idsite];
    ?>
    id site est vide alors qu'il est remplit auparavant et session_id retourne un identifiant de session différent de celui de la page d'avant
    La page d'avant avait un code simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?php
    session_start();
    echo 'session id : '.session_id();
    $_SESSION[idsite]=5;
    ?>

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 16
    Par défaut
    Salut !

    Je ne sais pas quel arichecture a ton site actuellement mais essayes un truc simple du style, mettre page1.php et page2 dans le meme repertoire (je sais ca n'a rien a voir mais bon c'est deja pour se rassurer).

    Dans un second temps essayes $_SESSION['idsite'] plutot que $_SESSION[idsite] la encore c'est juste par précaution.

    Si j'ai bien compris tu appelles un de tes script depuis un autre site. Si c'est le cas il est evident que l'id de session change par rapport a un script directement exécuter sur ton serveur.

    Essaye de nous en dire plus sur le contexte de développement de ton application. Histoire qu'on puisse avoir un idée clair la dessus.

    Ce qui est certain sur un meme site( d'apres le code que tu as donné), l'id du session ne peut pas changer. Sauf si la session est détruite en temps. A la limite regarde la durée de vie de tes sessions.

    Pareil si tu as démarer une session sur un navigateur et que tu passe un autre navigateur la aussi la session sera différente.

    Enfin bon donne nous plus de détails on pourra mieux cerné ton problème et si possible y trouver une solution satisfaisante !

  5. #5
    Membre éclairé
    Inscrit en
    Décembre 2006
    Messages
    411
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 411
    Par défaut
    A ce jour, la proportion de sessions perdues est de près de 40 % sur mon site !!!
    Le script est appelé à partir de sites extérieurs c'est un simple lien href vers mon script php celui-ci contient deux frames une haute et une affichant un site internet.
    Dans ce script je fais un session_start(); au début et je remplis les valeurs de sessions dans le tableau par exemple $_SESSION['valeur']=25;
    Je vous donne le code de ce fichier :
    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
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    <?php
    session_start();
    	require("include/connection.php");
    	require("include/maintenance.php");
    	$url=parse_url($_SERVER['HTTP_REFERER']);
    	$protocole=$url[scheme];
    	$uri=$url[host];
    	if (empty($uri)){
    	$urlsite='';
    	$urlsite2='';
    	}
    	else {
    	$urlsite=$protocole.'://'.$uri;
    	if (substr($uri,0,4)=='www.') {
    	$urlsite2=$protocole.'://'.substr($uri,4);
    	}
    	else {
    	$urlsite2=$protocole.'://'.'www.'.$uri;
    	}
    	}
    	$pseudo=$_GET['pseudo'];
    	$pub=$_GET['idpub'];
    	if ($urlsite==$domaine || $urlsite2==$domaine) {
    	$query2="select id,url from siteaffilie where (url='$urlsite' or url='$urlsite2')";
    	}
    	else {
    	$query2="select id,pseudo,etat,url from siteaffilie where pseudo='".mysql_real_escape_string($pseudo)."' and etat='ACCEPTE' and (url='$urlsite' or url='$urlsite2')";
    	}
    	$result2 = mysql_query($query2, $connection) or die ("impossible d'effectuer l'insertion");
    	$affected_rows2 = mysql_num_rows($result2);
    	if ($affected_rows2!=1) {
    	$code=0;
    	include("tracker.php");
    	echo '<p align=center>L\'adresse '.$urlsite.' n\'est pas autorisé à diffuser nos annonces publicitaires</p>';
    	mysql_close();
    	exit();
    	}
    	$data2=mysql_fetch_array($result2);
    	$_SESSION['idsite']=$data2[id];
    	$_SESSION['benef']=$pseudo;
    	$_SESSION['idpub']=$pub;
    	$query="select idpub,etat,lien,multiclic from publicite where idpub='$pub' and etat='ACTIF'";
    	$result=mysql_query($query, $connection) or die('error making query2');
    	$affected_rows=mysql_num_rows($result);
    	if ($affected_rows==1) {
    	$data=mysql_fetch_array($result);
    	if (isset($_SESSION['timestamp'])) {
    	if (($_SESSION['timestamp']+$_SESSION['secondes'])>time()) {
    	$code=1;
    	include("tracker.php");
    	echo '
    	<html>
    <head>
    <title></title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    </head>
    
    <body bgcolor="#003366" text="#FFFFFF">
    <div align="center">
      <p><font face="Georgia, Times New Roman, Times, serif" size="2"><b>Vous visitez 
        actuellement un autre partenaire</b></font></p>
      <p>&nbsp;</p>
    </div>
    </body>
    </html>';
    mysql_close();
    exit();
    	}
    	}
    	$_SESSION['lien']=$data[lien];
    	$_SESSION['nbclic']=$data[multiclic];
    	$_SESSION['parent']=1;
    	}
    	else {
    	$code=2;
    	include("tracker.php");
    	echo '
    	<html>
    <head>
    <title></title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    </head>
    
    <body bgcolor="#003366" text="#FFFFFF">
    <div align="center">
      <p><font face="Georgia, Times New Roman, Times, serif" size="2"><b>La publicité n\'existe pas !!!</b></font></p>
      <p>&nbsp;</p>
    </div>
    </body>
    </html>';
    mysql_close();
    exit();
    	}
    echo '
    <html>
    <head>
    <title></title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    </head>
    <frameset rows="85,*" frameborder="no" border="0" framespacing="0"> 
      <frame name="topFrame" scrolling="NO" noresize src="nbclic3.php?pseudo='.$pseudo.'">
      <frame name="mainFrame" src="'.$_SESSION['lien'].'">
    </frameset>
    <noframes> 
    <body bgcolor="#003366" text="#FFFFFF">
    </body>
    </noframes> 
    </html>';
    mysql_close();
    ?>
    Maintenant je vous donne le bout de code qui renvoie l'erreur et qui se trouve dans la frame haut soit nbclique3.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
    	session_start();
    	require("include/connection.php");
    	require("include/maintenance.php");
    	$ip=$_SERVER['REMOTE_ADDR'];
    	$idpub=$_SESSION['idpub'];
    	$pseudo=$_GET['pseudo'];
    	if (isset($_SESSION['idsite'])==false) {
    	$code=3;
    	include("tracker.php");
    		echo '
    <html>
    <head>
    <title></title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    </head>
     
    <body bgcolor="#003366" text="#FFFFFF" link="#FFCC00" vlink="#FFCC33" alink="#FFCC33">
    <table width="100%" border="0">
      <tr>
        <td width="100%" height="36"> 
          <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><b>Identifiant du site non trouvé !!!</b></font></p>
          <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><a href="#" onClick="parent.window.close()"><b>Fermer 
            la fenêtre</b></a></font></p>
    </td>
    </tr>
    </table>
    <p>&nbsp;</p>
    </body>
    </html>';
    unset($_SESSION['parent']);
    unset($_SESSION['lien']);
    unset($_SESSION['idpub']);
    unset($_SESSION['nbclic']);
    exit();
    	}
    Le message d'erreur est "Identifiant du site non trouvé !!!" ce qui signifie que $_SESSION['idsite'] n'est pas rempli et pourtant il l'est dans la page d'avant.
    Il s'avère qu'après avoir testé j'ai constaté que l'id de session change entre la page contenant les deux frames et nbclique3.php qui est la frame du haut.
    J'ai basculé le site chez free et le problème est identique chez eux. Je l'ai à chaque fois sous INTERNET EXPLORER mais pas sous MOZILLA FIREFOX.
    Est-ce que vous pensez que les frames pourraient avoir un lien avec ce problème ?
    Merci d'avance

  6. #6
    Membre éclairé
    Inscrit en
    Décembre 2006
    Messages
    411
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 411
    Par défaut
    J'avance sur le problème. En fait le problème est en grande partie lié à internet explorer qui ne génère pas le cookie sur le disque lorsqu'il trouve un site avec une frame pointant vers un autre site (le bug intervient si ce dernier veut générer un cookie sur le disque car IE Bloque ce cookie car il n'a pas de stratégie de confidentialité compacte)
    J'ai inséré ce code avant le session_start()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    header('P3P:CP=??IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT??');
    et pour l'instant je n'ai plus que 5 % de pertes contrairement à mes 40 % de pertes au départ.
    Mais comment réglé la totalité des problèmes

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

Discussions similaires

  1. [Cookies] Modifier une variable session
    Par Galip dans le forum Langage
    Réponses: 1
    Dernier message: 19/06/2007, 01h13
  2. Réponses: 2
    Dernier message: 30/05/2007, 17h08
  3. [Cookies] passage de variables de session
    Par Le fut dans le forum Langage
    Réponses: 3
    Dernier message: 26/04/2007, 16h11
  4. Réponses: 6
    Dernier message: 09/04/2007, 17h53
  5. Réponses: 1
    Dernier message: 09/03/2007, 19h26

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