Variables de session IE et Firefox

Résolu
aquanovax Messages postés 25 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 février 2009 - 15 déc. 2008 à 15:16
aquanovax Messages postés 25 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 février 2009 - 17 déc. 2008 à 07:56
Bonjour !

Je rencontre un problème ces derniers jours, depuis que je suis apssé sur firefox 3.

J'utilise pour le site que je développe actuellement des variables de session pour stocker certaines informations sur les utilisateurs. Tout allait bien avec l'ancienne version de Firefox, mais avec la nouvelle les variables de session ne sont pas accessibles depuis certaine pages (Ce qui est d'autant plus étrange) ! J'ai bien vérifié l'ouverture de la session sur chaque pages. Aucune variable GET ou POST possédant un nom identique.

Je n'ai pas ce problème avec IE7. Firefox est configuré pour accepter les cookies.

Voici le début du code de la page qui pose problème :

<?php
    session_start();
   
    if(isset($_GET['file']) and is_numeric($_GET['file'])){
            if(isset($_SESSION['user']['id'])){               /// Ici $_SESSION est vide sur Firefox, mais ne l'est pas sur la page appelante...
                ...
            }
    }
...

Auriez-vous une idée de la source du problème ?

Merci
A voir également:

6 réponses

kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
16 déc. 2008 à 06:16
A priori je ne vois pas de raison pour que ça ne fonctionne pas.

Si tu mets juste ce code au tout début de ta page appelée, as tu des variables définies ?
<?php
    session_start();
    print_r($_SESSION);
    exit;
?>

Et si tu créé 2 pages dans le même rep :
1.php :

<script type="text/javascript">
function OpenURL(URL, newWindow){
    if (newWindow == 1) {
      alert (URL);
        window.open (URL);
    } else {
        location.href = URL;
    }  
}
</script>

<?php
session_start();
$_SESSION['test'] = 'machin';
?>

et 2.php :
<?php
session_start();
print_r($_SESSION);
?>

Tu retrouves bien ta variable de session en cliquant sur test ?

Kohntark -
3
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
15 déc. 2008 à 17:41
Salut,

Tu peux nous mettre le code de $_SESSION['user']['id'] ?

Kohntark -
0
aquanovax Messages postés 25 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 février 2009
15 déc. 2008 à 18:02
Alors je ne suis pas sur d'avoir bien compris, dans le doute je post tout.

Voila comment je définis les variables de session lors du login d'un utilisateur :
$_SESSION['user']['id']            = $data02['id']; /// Récupération des entrées dans la BDD
$_SESSION['user']['email']        = $data02['email'];
$_SESSION['user']['name']        = $data02['name'];
$_SESSION['user']['forname']    = $data02['forname'];
$_SESSION['user']['nbrOrder']    = $data02['nbr_of_order'];
$_SESSION['user']['activated']    = $data02['activated'];

$_SESSION['user']['id'] contient toujours un nombre : l'id de l'utilisateur dans la BDD.

J'arrive à accéder à ces variables après. Sauf sur 2 pages... Les 2 pages sur les quelles je n'arrive pas à accédé à ces variables sont appelé via javascript. -> window.open(URL);

Exemple contenu de $_SESSION['user']['id'] avant d'apellé une de ces 2 pages (Firefox) :
echo $_SESSION['user']['id'];    =     21            // Valeur correcte
Contenu sur 1 de ces 2 pages apellées (Firefox) :
echo $_SESSION['user']['id'];    =
isset($_SESSION['user']['id']);    =   false
Avec IE le contenu de $_SESSION['user']['id'] vaut bien 21 après l'apelle de l'une de ces pages...

De plus j'ai remarqué que l'id de la session n'est plus le même sur Firefox :
Avant : bb80df1905e664720db9675aa00f2dca
Après : 45ba53b03de7ca6a56839b027e679118
Sur IE :
Avant : 0bf2e3d93d0a67d0c4977d17c00d810a
Après : 0bf2e3d93d0a67d0c4977d17c00d810a

Voila. J'éspère que j'ai été claire. Si tu veux des éclaircissements sur certains points n'hésite pas à me demander !
Merci @+
0
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
15 déc. 2008 à 19:06
Heu ....

Peux tu indiquer :
     le code qui contient window.open(URL); et celui définissant URL
     le code de la page URL (jusqu'à la variable de session qui n'est pas définie)
     comment sont passés les identifiants de session (par url ou par cookie ?)

Cordialement,

Kohntark -
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
aquanovax Messages postés 25 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 février 2009
15 déc. 2008 à 22:17
Re, voici les réponses aux questions que tu m'as posé :

Le code javascript :
function OpenURL(URL, newWindow){

    if( newWindow == 1 ){

        window.open(URL);

    }else{

            location.href=URL;

    }   

}


Je passe l'url de la page en paramètre. (Chemin absolu)
Le code de la page que je veux ouvrir :
<?php
    session_start();
   
    if(isset($_GET['file']) and is_numeric($_GET['file'])){
   
        /// Si je fais echo session_id(); ici, l'id diffère de l'id de la page appelante ! (voir mon ancien post)

        include('conexion.php');
        include('functions.php');
       
        connexion( "localhost", "USER", "PASSWORD", "TABLE");
       
        $req01 = "SELECT * FROM lesson WHERE id='".$_GET['file']."'";
        $data01 = mysql_fetch_array(mysql_query($req01));

        if($data01['free'] == 1){       
            if(isset($_SESSION['user']['id'])){                                            ///  Ici le tableau $_SESSION['user'] n'existe pas sous Firefox
                IncStat('num_view', $_GET['file']);
                DisplayPDF($data01['path'], $_GET['file']);
            }else{
                DisplayErrorHTML(18);
            }
        }else{
            if(CheckRights($_SESSION['user']['id'], $_GET['file'])){      ///  Ici le tableau $_SESSION['user'] n'existe pas sous Firefox
                IncStat('num_view', $_GET['file']);
                DisplayPDF($data01['path'], $_GET['file']);
            }else{
                DisplayErrorHTML(1);
            }
        }
        mysql_close();
    }
?>

Quand aux identifiants de session, ils sont passés par cookies

Voila j'éspère que ceci t'aidera.
@+
0
aquanovax Messages postés 25 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 février 2009
17 déc. 2008 à 07:56
Salut ! Tout d'abord excuse moi de n'avoir pas répondu hier mais j'ai eu une journée très chargé.

Bref j'ai commencé par afficher les variables de session comme tu me l'as demandé, et là bonne surprise elle étaient correctement définies. J'ai refait plusieurs tests et le problème ne se reproduit plus. C'est d'autant plus bizarre car je n'avais rien changé au code. Enfin bon tout fonctionne correctement ! Mais la source de ce problème reste obscure. Je te remercie pour l'aide que tu m'as fournis et valide ta dernière réponse !

Merci et @+
0
Rejoignez-nous