Variables de session IE et Firefox [Résolu]

Messages postés
25
Date d'inscription
jeudi 30 novembre 2006
Dernière intervention
14 février 2009
- 15 déc. 2008 à 15:16 - Dernière réponse :
Messages postés
25
Date d'inscription
jeudi 30 novembre 2006
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
Afficher la suite 

Votre réponse

6 réponses

Meilleure réponse
Messages postés
3708
Date d'inscription
lundi 5 juillet 2004
Dernière intervention
27 avril 2012
- 16 déc. 2008 à 06:16
3
Merci
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 -

Merci kohntark 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 88 internautes ce mois-ci

Commenter la réponse de kohntark
Messages postés
3708
Date d'inscription
lundi 5 juillet 2004
Dernière intervention
27 avril 2012
- 15 déc. 2008 à 17:41
0
Merci
Salut,

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

Kohntark -
Commenter la réponse de kohntark
Messages postés
25
Date d'inscription
jeudi 30 novembre 2006
Dernière intervention
14 février 2009
- 15 déc. 2008 à 18:02
0
Merci
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 @+
Commenter la réponse de aquanovax
Messages postés
3708
Date d'inscription
lundi 5 juillet 2004
Dernière intervention
27 avril 2012
- 15 déc. 2008 à 19:06
0
Merci
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 -
Commenter la réponse de kohntark
Messages postés
25
Date d'inscription
jeudi 30 novembre 2006
Dernière intervention
14 février 2009
- 15 déc. 2008 à 22:17
0
Merci
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.
@+
Commenter la réponse de aquanovax
Messages postés
25
Date d'inscription
jeudi 30 novembre 2006
Dernière intervention
14 février 2009
- 17 déc. 2008 à 07:56
0
Merci
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 @+
Commenter la réponse de aquanovax

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.