$_session et IE (cookies de session) !!

Résolu
cs_rocknroll2 Messages postés 100 Date d'inscription vendredi 30 janvier 2004 Statut Membre Dernière intervention 22 janvier 2010 - 16 août 2005 à 10:58
cs_rocknroll2 Messages postés 100 Date d'inscription vendredi 30 janvier 2004 Statut Membre Dernière intervention 22 janvier 2010 - 16 août 2005 à 17:29
J'ai un site avec PHP et SQL,
Mes $_session ne fonctionnent que si l'utilisateur coche "accepter les cookies de session" dans sa configuration d'IE !
Du coup mes requètes SQL renvoient des erreurs (Warning: main(): Unable to access .../..chemin du fichier ../sel_cnra/selections/detailscompet/timing.html

Est-ce normal ou est-ce que j'oublie quelque chose ?
Je ne peux pas demander à chaque utilisateur de changer sa config......
De plus, c'est la première fois que je vois cela et j'ai mis un moment pour cerner ce problème.

Quelqu'un connaît-il la solution?

Merci d'avance à tous.

rocknroll2

4 réponses

coockiesch Messages postés 2268 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 13 septembre 2013 4
16 août 2005 à 16:01
Salut!

En début de page, tu dois faire un truc dans le genre:

<?php

// on démarre la session

session_start();



// si sid est passé dans l'url et pas vide

if( isset( $_GET['sid'] ) && !empty( $_GET['sid'] ) )

{

// on le récupère

$sid = $_GET['sid'];

// on l'utilise

session_id( $sid );

}

else

// on récupère le nouveau sid

$sid = session_id();

?>



Ensuite, tu le fais passer dans tes pages, par exemple:

<form action="page.php?sid=<?php echo $sid; ?>" method="post">



Bien sur, tout n'est pas complet... Il te faudrait tester si le
visiteur accepte ou non les cookies et seulement si ce n'est pas le
cas, faire passer le sid par cette méthode. Personellement, j'ai fais
une fonction qui l'ajoute automatiquement si c'est nécessaire à toute
url... Mais ca demande de faire passer toutes les urls par cette
fonction ce qui est très lourd, ^^



Si qlqn à une autre soluce, ben je suis preneur! :)



@++



R@f

www.allpotes.ch: Photos, humour, vidéos, gags, ...

"On dit que seulement 10 personnes au monde comprenaient Einstein. Personne ne me comprends. Suis-je un génie???"
3
coockiesch Messages postés 2268 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 13 septembre 2013 4
16 août 2005 à 11:23
Salut!

Donc je suppose que tu accède à un fichier selon une valeur de ta
session, quand celle ci n'existe pas, le fichier n'est pas trouvé,
juste?



Les sessions fonctionnes plus ou moins comme ceci:

Un fichier par session contenant les variables de session et leur
valeur est créé sur le serveur, il porte un identifiant de 32
caractères ( identifiant de session ou sid ). Cet identifiantest stocké
dans un cookie sur le poste du client afin de pouvoir récupérer les
valeurs de la bonne session à la page prochaine. Si le client accepte
pas les cookie, ben ca bloque. Ce que tu peux faire, c'est transmettre
manuellement le sid par l'url, au fil de tes pages...



Pour obtenir le sid de la session en cours:

$sid = session_id();



Pour affecter à une session un nouveau sid:

session_id( $valeur_du_nouveau_sid );

( ce code est à placer après le session start, après avoir récupéré la valeur du sid dans l'url ).



Voila, j'espère avoir été assez clair, tu peux zieuter:

http://www.phpcs.com/code.aspx?ID=23628



@++



R@f

www.allpotes.ch: Photos, humour, vidéos, gags, ...

"On dit que seulement 10 personnes au monde comprenaient Einstein. Personne ne me comprends. Suis-je un génie???"
0
cs_rocknroll2 Messages postés 100 Date d'inscription vendredi 30 janvier 2004 Statut Membre Dernière intervention 22 janvier 2010
16 août 2005 à 15:04
Slt,
Merci à toi coockiesch pour tes explications. J'ai fait un affichage de la variable de session, celle-ci change perpetuellement car en fait, j'ai une seule page avec plusieurs formulaires qui se recharge à chaque "submit" (<form method="post" action="toto.php">). Je pense donc que, à chaque rechargement de la page, on repasse par le "session_start()" qui nous donne un autre ID de session et perd donc les indications de la session d'avant !!!!
Est-ce que je me trompe ?
Y a t'il une solution aisée ? car je ne suis pas féru en PHP...
Du style if (isset(session_id())).... alors pas de session_start()...
Merci d'avance, car pour moi c'est OK avec mon paramètre IE de session = accepter, et j'ai donc déjà mis en ligne tout cela pensant que tout le monde veraait mes belles pages... et plouf plouf, raté....
0
cs_rocknroll2 Messages postés 100 Date d'inscription vendredi 30 janvier 2004 Statut Membre Dernière intervention 22 janvier 2010
16 août 2005 à 17:29
Merci pour cette nouvelle réponse coockiesch !

Je teste ça demain matin car là, j'ai un gros boulot à finir pour ce soir.
Je te tiens au courant !

Pour une autre soluce, ne compte pas sur moi...... Mais j'espère que qqu'un en donnera une !
En tout cas, je suis certain que mon blème d'origine vient de IE et de son paramètre sécurité des "cookies de session" est en cause. J'ai testé avec et sans et si l'on autorise les cookies de session, alors, aucun souci !
0
Rejoignez-nous