Jag har ett loginscript som kortfattat ser ut så här:
//SQLkontroll av användarnamn och lösen här.
//Sql-frågan returnerar recordsetet $RecSet
Om användaren gör en lyckad inloggning vill jag sätta ett par sessionsvariabler
och sen redirecta till användarens hemsida med hjälp av javascript.
<?
if(användaren_existerar)
{
session_start();
session_register('userid');
$userid=$RecSet["userid"]
session_register('email');
$email=$RecSet["email"]
/*
Jag har även provat denna variant utan resultat.
$_SESSION['userid']=$RecSet["userid"];
$_SESSION['email']=$RecSet["email"];
*/
<script language="JavaScript">
<!--
document.location.href='<?=$_SERVER['DOCUMENT_ROOT']?>/users/index.php';
//-->
</script>
}
?>
Problemet är att när jag försöker att kolla sessionsvariablerna från /users/index.php så är
$_SESSION arrayen tom, eller ja nästan.
Variablerna finns när man loopar igenom arrayen, men det finns inga värden till dem.
Ex:
<?
session_start();
while (list ($key, $val) = each ($_SESSION))
{
echo "$key = $val <br>";
}
?>
Det som skrivs ut i denna loop är bara userid='' samt email=''.
Men om jag gör om inloggningen igen så finns variablerna där...
Vad har jag gjort för fel?
Att jag glömt semikolon var bara en miss när jag skrev av koden.
Dessa finns i den 'skarpa' versionen.
Med hjälp av den kod du postade så visade det sig att alla variabler finns i recordsettet, samt även är korrekt tilldelade till $_SESSION.
Däremot när man redirectas till /users/index.php så är alla sessionsvariabler tomma.
Detta verkar vara helskumt...
Kan det ha något med javascriptet att göra?
Eller att man redirectar till en underkatalog där /users/-katalogen finns?
Jag hade i min loginfunktion skrivit global $_SESSION.
Detta eftersom jag behöver komma åt $_SESSION inuti funktionen(duh...).
När jag tog bort den raden så funkade det klockrent!
Vad händer egentligen när man 'global-ar' $_SESSION?
Sätts den till NULL eller blir den unsettad?