Hej, jag har ett litet problem med en session här. Den funkar när $landsession är tom, utan värde, men när man ger den ett värde, t ex Sverige, skriver webbläsaren ut "Din session säger att du inte är från Sverige..."
Uppskattar hjälp :)
<?PHP
$connect = mysql_connect("localhost", "***", "***");
mysql_select_db("vallgren");
session_start();
$landSession = "Sverige";
session_register("landSession");
if($HTTP_SESSION_VARS['landSession'] == "Sverige")
{
echo "Din session säger att du är från Sverige!";
}
else
{
echo "Din session säger att du inte är från Sverige...";
}
session_unregister ( "landSession" );
session_destroy();
?>
Du har glömt ett litet $-tecken på raderna där det står
session_register("landSession");
och
if($HTTP_SESSION_VARS['landSession'] == "Sverige")
och
session_unregister ( "landSession" );
Börja med och registrera den innan du tilldelar den ett värde. Sedan brukar jag aldrig använda session_start() när jag ändå registrerar dem med session_register(). Inte helt hemma på sessions, men testa! :)
Det är knepigt det här med sessioner. Jag rekommenderar http://www.php.net/manual/en/function.session-register.php för närmare instruktioner om session_register(). Att läsa igenom allt som användarna har skrivit hjälper ofta. Där återfinns ofta svar på många frågor.
När det gäller tilldelning av värde och registrering av variabel i en session så har jag inte läst något om att detta bör göras i en speciell ordning.
De flesta (inklusive mig) tycks göra på detta sättet, alltså inte som Chavez säger:
$namn = "Bertil";
session_register("namn");
------------------
Det händer att jag inte är mig själv. Då är jag någon annan.
Ok, kan hända att de flesta inte gör som jag gjort. Men faktum kvarstår, jag registrerar alltid mina session variabler i början av filen (och det har fungerat hittils).
Känns på något sätt dump att tilldela någonting som inte existerar :)
Vad osm blir fel är att han inte fattar att jag faktiskt har gett min session värdet Sverige, utan visar det som att sessionen pekar påa tt man inte är från Sverige... :l
Är inte så säker på det här med sessions, men min misstanke är att poster i $HTTP_SESSION_VARS sätts först när man lämnar sidan. Om man istället sätter posterna direkt bör det fungera.
om register_globals=off i php.ini måste man använda $HTTP_SESSION_VARS för att sätta och läsa sina session-variabler.
om register_globals=on läser man varabler direkt if($landSession=="Sverige") , och variabeln lagras i $HTTP_SESSION_VARS när man lämnar eller laddar om sidan. (Om jag nu förstått saken rätt).
I kod-exemplet överst är ju variabeln borttagen med session_unregister och session_destroy. Utan dessa bägge rader skulle du fått det rätt om du laddade om sidan.