Disparition des variables de session

Eléphanteau du PHP | 14 Messages

29 sept. 2009, 09:31

Bonjour,
je teste mon site en local sur EasyPHP 1.8 sous IE8 en vista
bizarement si mes cookies internes sont à 'refusé' mes variables $_SESSION[' '] n'existe plus
est-ce normal ?
les $_SESSION[' '] sont elles assimilées à un cookie si Easyphp tourne en local?
existe il une parade autre que d'activé mes cookies, bien sur ?
je serai spécialiste quand j'utiliserai 40% du potentiel de PHP

Mammouth du PHP | 686 Messages

29 sept. 2009, 10:12

Mets tu bien session_start() à chaque debut de page et avant tout debut de code ?

Eléphanteau du PHP | 14 Messages

29 sept. 2009, 10:25

bonjour sylvaing26
merci de l'interet que tu porte à ma question

rep:

oui bien sur voici les deux sources , et le raisonnement
en fait cela boucle en cas ou les cookies iinternes sont desactivées
j'ai besoin de savoir si les cookies sont activés
j'ai trouvé ceci et cela fonctionne
------------------------------------------------------------------------------------------------------------
if (SID=='') /* voir si cookies activés coté client */
{
$_SESSION['cookie']='YES';

}
else
{
$_SESSION['cookie']='NO';

}
--------------------------------------------------------------------------------------------------------------
j'ai besoin pour adapter mes CSS de la résolution d'écran je ne voudrait pas travaillé en % je préfère les CSS en px
j'ai trouvé ceci et cela fonctionne très bien
<head>
<!-- Recherche de la resolution d'écran -->
<script type="text/javascript">
<!-- debut
function resolution()
{
document.location="<?php echo $_SERVER['PHP_SELF']; ?>?W_width="+screen.width+"&W_height="+screen.height;
}
// fin -->
</script>
</head>
<?php

if(!isset($_GET['W_width']) and !isset($_GET['W_height']))
{
echo '<body onload="resolution();">';
}
else
{
echo "<body>";
$_SESSION['largeur']=$_GET['W_width'];
$_SESSION['hauteur']=$_GET['W_height'];
}
--------------------------------------------------------------------------------------------------------------
j'ai besoin de savoir si javascript est activé
j'ai trouvé ceci et cela fonctionne aussi ; simple si j'ai la résolution JS est actif sinon il ne l'est pas
if(isset($_SESSION['largeur']))
{
$_SESSION['JS']='YES';

}
else
{
$_SESSION['JS']='NO';
$_SESSION['largeur']='auto';
$_SESSION['hauteur']='auto';
}
-------------------------------------------------------------------------------------------------------------
le problème est que j'ai besoin de la résolution d'écran pour déclaré mes CSS ( css800 CSS1024 etc
mais j'en ai besoin dans le <HEAD> donc avant le <body>
j'ai donc chercher à une double redirection paramètrée

PGM A.php si variable de session (param) n'existe pas redirige sur PGM premier.php
PGM premier.php Javascript test résolution , créer $_SESSION['param'] et redirection PGM A.php

function redirige($url)
/*redirection vers une autre page */
{
die('<meta http-equiv="refresh" content="0;URL='.$url.'">');
}
---------------------------------------------------------------------------------------------------------------------------------------------------
cela fonctionne aussi trés bien

bizarement cela fonctionne sauf si les cookies sont désactivés
on dirait que il perd les variables SESSION(coté serveur) si les Cookies (coté client) sont désactivé , je sais que cela n'a rien a voir , mais il me dit qu'il n'a pas la valeur de $_SESSION['appelant'] si les cookies sont désactivés sur ma machine
je ne comprend plus rien surtout que j'ai fais certains test et que cela n'a rien a voir
j'utilise une variable session pour revenir au programme appelant car je ne sais pas sur quelle page l'utilisateur arrivera en premier lieu via google et je voudrais appliquer cette procédure à toutes les pages
je serai spécialiste quand j'utiliserai 40% du potentiel de PHP

Eléphanteau du PHP | 14 Messages

29 sept. 2009, 10:29

source de premier.php
<?php
Session_start();
function redirige($url)
/*redirection vers une autre page */
{
die('<meta http-equiv="refresh" content="0;URL='.$url.'">');
} /*declaration SESSION*/
if (SID=='') /* voir si cookies activés coté client */
{
$_SESSION['cookie']='YES';

}
else
{
$_SESSION['cookie']='NO';

}
?>
<html>
<head>
<!-- Recherche de la résolution d'écran -->
<script type="text/javascript">
<!-- debut
function resolution()
{
document.location="<?php echo $_SERVER['PHP_SELF']; ?>?W_width="+screen.width+"&W_height="+screen.height;
}
// fin -->
</script>
</head>
<?php

if(!isset($_GET['W_width']) and !isset($_GET['W_height']))
{
echo '<body onload="resolution();">';
}
else
{
echo "<body>";
$_SESSION['largeur']=$_GET['W_width'];
$_SESSION['hauteur']=$_GET['W_height'];
}


if(isset($_SESSION['largeur']))
{
$_SESSION['JS']='YES';

}
else
{
$_SESSION['JS']='NO';
$_SESSION['largeur']='auto';
$_SESSION['hauteur']='auto';
}


$_SESSION['param']='OK';
redirige('A.php');

?>
</body>
</html>
je serai spécialiste quand j'utiliserai 40% du potentiel de PHP

Eléphanteau du PHP | 14 Messages

29 sept. 2009, 10:33

source de A.php

<?php
session_start();
function redirige($url)
/*redirection vers une autre page */
{
die('<meta http-equiv="refresh" content="0;URL='.$url.'">');
}
$_SESSION['appelant']='A.php';
if (!isset($_SESSION['param']))
{
redirige ('premier.php');
}
?>
<html>
<body>
<?php
if ($_SESSION['cookie']=='YES')
{
echo "Cookie activé<br>";
}
else
{
echo "Cookie non activé<br>";
}
echo "largeur ecran ". $_SESSION['largeur']."<br>";
echo "hauteur ecran ".$_SESSION['hauteur']."<br>";
echo "JavaScript ".$_SESSION['JS']."<br>";
?>
</body>
</html>
voila je lance A.php , c'est en général bon, mais cela boucle(never ending program) si cookies internes désactivé (S_SESSION et Cookies meme combat si Easyphp en local ????)
je serai spécialiste quand j'utiliserai 40% du potentiel de PHP