| ||||||||
Petit astucien | bonjour à tous.
Quelqu'un peut-il m'expliquer pourquoi le code suivant fonctionne sous firefox, et echoue sur internetexplorer :
Le code de session.php:
[code]<?php session_start();
$_SESSION['essai']="quelques choses";
?>
<html>
<head>
<title>Document sans titre</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<a href="session2.php">ici</a>
</body>
</html>
[/code]
voici le code de session2.php :
[code]
<?php
session_start();
?>
<html>
<head>
<title>Document sans titre</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<?php
echo $_SESSION['essai'];
?>
</body>
</html>
[/code]
Voilà, j'ai essayé de simplifier au maximum. Ce script marche sur firefox, mais sur internet explorer, il me donne le (célébre) message suivant :
Notice: Undefined index: essai in d:\partager\sites\test\session2.php on line 12
alors voilà...[boom]
Si quelqu'un à une idée, je suis preneur, d'avance merci
A la vôtre [bierre]
Modifié par papyboingtown le 24/03/2006 04:50 | |||||||
Publicité | ||||||||
| ||||||||
Petit astucien | La variable de session n'est pas définie.
Coder :
[code]<?php
session_start();
if(empty($_SESSION["essai"])) {$_SESSION["essai"]="";}
?>[/code]
et voilou !
*µ* | |||||||
Astucien | Salut,
Il faudrait voir de quelle manière la session est gérée chez ton hébergeur…
Il faut en effet savoir qu'une session, pour etre gardée d'une page à l'autre, doit fournir un moyen de la récupérer…
Deux solutions existent: soit on transmet l'identifiant de session par l'url (ce qui donne quelque chose du genre de fichier.php?sessid=aerzeartt13512456aedxst), soit, le serveur place un "cookie de session", qui est un cookie à durée très limitée (généralement pas plus d'une demi-heure entre chaque requete) qui… subit toutes les limites du cookie, dont, entre autre, le fait que tous les navigateurs sont en mesure de les bloquer…
Comme le code fonctionne sous mozilla/firefox, et pas sous internet explorer, et que le code que tu nous présente ne fournit aucune valeur dans l'url, on peut estimer que tu as autorisé les cookie pour le site, mais que tu les a bloqué sous internet explorer…
Essaie peut etre de voir ce qui se passerait si tu autorisais exceptionnellement les cookie sous IE pour ce site [clindoeil]
S'il apparait que le code fonctionne, n'oublie pas de placer un avertissement sur ton site du genre de "attention, pour fonctionner correctement, ce site nécessite que vous acceptiez les cookies" [clindoeil] | |||||||
Petit astucien | Bonjour à tous et merci à vous deux pour ces précisions.
J'avais bien pensé à cette affaire de cookie, alors j'ai mis la sécu de mon internet explorer au minimum mais ça n'a rien changé.
Sinon, je suis en train de le créer ce site et pour l'instant j'utilise easyphp 1.8 qui me donne pleinement satisfaction sous windows mais qui est peut-etre la source de mon petit soucis.
Bon si jamais je trouve pas, je met un formulaire de plus avec un submit et pis voilà, y'aura plus de soucis.
merci
A bientôt et a la vôtre [bierre] | |||||||
Petit astucien | bonjour, j'ai fait un strict copier coller des 2 scripts et cela fonctionne sur FF et IE de mon côté.
Par contre en allant directement sur session2.php, en effet cela ne fonctionne pas car la variable nest pas definie comme il est dit.
Et midnightblue a proposé la solution. Et vous pouvez rajouter un message derreur comme quoi la variable nest pas set .
++ Modifié par millefeintes le 24/03/2006 17:20 | |||||||
Astucien | Heuu…
Visiblement, tu n'as pas *vraiment* conscience de ce que représente une session…
Il faut savoir qu'une session, cela permet de "garder" différentes informations entre différentes pages web, durant une durée *très* limitée (généralement, un maximum d'une demi heure entre deux requetes au serveur qui la gere), mais que le simple fait de fermer le navigateur met *également* (et du moins, de manière théorique) fin à la session…
De plus, effectivement, si tu vas directement sur la "deuxième page", alors que certaines informations sont définies en variables de session, il n'est pas étonnant que le serveur ne les retrouve pas… vu qu'il n'a aucun moyen de savoir… qu'il aurait du créer une valeur…
Ce que tu peux donc faire, au pire, c'est de commencer ta deuxième page en testant l'existance de ta variable de session.
Si elle existe, tu la gères de manière classique, et sinon, le seul traitement que tu effectues, c'est d'inclure la page qui génère ta variable de session… (en prenant bien en compte que la déclaration de session doit etre effectuée avant tout envoi d'informations…
Avec une page "session.php" du genre de
[code]
<?php session_start();
$_SESSION['essai']="quelques choses";
?>
<html>
<head>
<title>Document sans titre</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<a href="session2.php">ici</a>
</body>
</html>[/code] (je me suis contenté de reprendre ton propre code, sur ce coup là)
tu pourrais très bien avoir une page "session2.php" du genre de
[code]
<? session_start();
//on vérifie si la variable de session n'est pas définie
if(!isset($_SESSION['essai']))
{
include('session.php');
}
else
{
?>
<html>
<head>
<title>Document sans titre</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<?php
echo $_SESSION['essai'];
?>
</body>
</html>
<?
}?>[/code]
Le résultat sera que, si la variable de session "essai" n'est pas définie, le fichier dans lequel elle l'est sera inclus, et que ce sera la seule chose qui sera faite…
Si, par contre, elle existe, le fichier sera en mesure de la gérer… Modifié par koala01 le 25/03/2006 23:01 | |||||||
|
Les bons plans du moment PC Astuces | Tous les Bons Plans | |||||||||||||||
|