Just nu i M3-nätverket
Jump to content

sessioner och formulär


ulrikajosefsson

Recommended Posts

ulrikajosefsson

Hej!

Jag har ett problem.

Jag skriver en sajt i php/xhtml. I början på varje sida har jag en session som startar (för inloggning). När den inte tilldelas något värde (på de sidor man inte behöver vara inloggad) läggs det ett gömt fält i formulären som inte tillåts när jag kör valideringen på w3s sida. Den lägger sig mellan <form> och <fieldset> även när jag har lagt dessa direkt efter varandra.

 

Jag tror alltså problemet är att sessionen är "tom". Eftersom jag använder $_SESSION läste jag någonstans att man inte skulle använda session_register(). Det enda sättet jag fick sessionen att funka var att starta den på varje sida. Problemet är att jag måste starta den på varje sida eftersom jag har html-sidans början i ett php-dokument som jag inkluderar på varje sida.

 

Hoppas någon fattar mitt problem och vad jag vill, det är knappt att jag själv gör det....

 

/ulrikajosefsson

 

Link to comment
Share on other sites

Att få se koden skulle underlätta... Men i och med att det låter som att problemet är att du försöker använda en variabel som inte finns, så kan du med hjälp av funktionen isset() kolla om den finns innan du försöker använda den.

 

 

Link to comment
Share on other sites

ulrikajosefsson

Njae, jag vill inte använda den, det är det som är problemet. Den här koden alstras självt tydligen.

Den kommer när jag kör den via w3s validator och ibland när jag surfar vanligt på den.

 

Självalstrad kod:

<form action="login/login.php" method="post" onsubmit="return validateLoginForm();" id="loginForm"><input type="hidden" name="PHPSESSID" value="d6f1f46fd2793cbe80d0597a27e3be73" /><fieldset>

 

Kod som jag har skrivit:

echo "<form action=\"login/login.php\" method=\"post\" onsubmit=\"return validateLoginForm();\" id=\"loginForm\"><fieldset>";

 

Det är alltså det gömda fältet med namnet PHPSESSID som jag vill ska försvinna

 

 

 

 

Link to comment
Share on other sites

Aha, det kommer sig av att den inte använder cookies för att lagra sessionerna. Har du php på din egen dator eller använder du något webbhotell?

 

I vilket fall som helst, prova följande:

 

ini_set("session.use_cookies", "1");

ini_set("session.use_only_cookies", "1");

 

 

Link to comment
Share on other sites

ulrikajosefsson

Ok. Har testat det. Funkade inte. Var ska jag lägga dem? Längst upp i koden, eller efter jag startar sessionen?

 

När jag kör det lokalt, med min egen server, fungerar allt som det ska. Det är på webhotellet det inte funkar...

 

 

Link to comment
Share on other sites

Tydal har rätt i att du inte använder dig av kakor, men hans lösning är inte den rätta.

 

Istället är det värdet session.use_trans_sid som ska sättas till Off. Detta värde lägger nämligen automatiskt till variabel PHPSESSID om besökaren inte använder sig av kakor.

 

Detta värde kan du sätta med ini_set() (då högst upp i filen, innan du påbörjar sessionen), eller i din php.ini eller .htaccess om du kör Apache.

 

Så här kan det alltså se ut:

ini_set("session.use_trans_sid", "0");

 

Men, med detta kommer att du manuellt måste hålla reda på användare som inte har kakor aktiverade, och skicka med variabeln PHPSESSID manuellt med varje förfrågning. Annars kommer en ny session att startas vid varje sidbesök.

 

Att detta inte fungerar med XHTML får man väl anse som en bugg i PHP, som någon borde rapportera till utvecklarna. Vilken version använder du? Gå in på www.php.net och klicka dig vidare till buggrapportering.

 

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.



×
×
  • Create New...