Witam mam dziwny problem :
Mam dwa pliki .php
session_module
index
W indexie mam :
<?php
include('session_module.php');
sess_start();
?>
zaś w session_module :
<?
$MYSID;
function sess_start($sid=NULL)
{
global $MYSID, $CKDOMAIN, $SES_VAR, $SESSION_DIR;
if (!isset($sid))
{
if (isset($_COOKIE['MYSID'])) $MYSID = $_COOKIE['MYSID'];
}
else
if ($sid != '') $MYSID = $sid;
if (!$MYSID)
{
$MYSID = generate_SID();
}
setcookie("MYSID",$MYSID,time()+365*24*3600,"/");
if (file_exists($SESSION_DIR.$MYSID))
{
$arr = file($SESSION_DIR.$MYSID);
// if session is expired, then skip ...
if ( time() > $arr[0] )
{
unlink($SESSION_DIR.$MYSID);
return;
}
// read content of session from file system ...
for ($i=1;$i<count($arr);$i++)
{
$arr2=explode(":",$arr[$i]);
$arr2[1]=base64_decode($arr2[1]);
$SES_VAR[$arr2[0]]=1;
GLOBAL ${$arr2[0]};
${$arr2[0]} = $arr2[1];
}
}
}
?>
Jak widać to poprzez index wywołuję funkcje session_start z session_module , która zmienia wartość w zmiennej globalnej $MYSID. Problem w tym że gdy próbuję ją wyświetlić w indexie to zawsze ma pustą wartość ( wartość początkową np. gdy ustawie w session_module wartość na 5 to nawet po odpaleniu funkcji ta wartość się nie zmieni).Gdy wstawie w funkcji na końcu return aby zwróciło mi wartość tą lokalną to jest OK. Dlaczego nie zmienia mi wartości zmiennej globalnej tylko zmiana jest w obrębie samej funkcji. Przecież są dodane znaczniki global