webForumDet fria alternativet

Snabb fråga om inloggning med sessions

PHP

6 svar · 297 visningar · startad av pakmannen

Medlem sedan dec. 2002227 inlägg
Frågan#1

Okej, en snabb undran bara:

Säg att jag har lösenordskyddade sidor. Jag sätter en sessionsvariabel kallad $_SESSION["id"] till ett id värde. På de sidor som kräver att man är inloggad skriver jag:

if(isset($_SESSION["id"])) {

ungefär. Men om man skriver så, kommer man inte in på sidan om man själv gör en session variabel som heter id? (Alltså det spelar väl ingen roll VAR variabeln skapas, i mitt inloggningsscript eller på vilken sida som helst) Hoppas ni förstår vad jag menar med det här. Och om det är så här, vad lägger man in på sina lösenordskyddade sidor för att hindra det?

Medlem sedan mars 20032 667 inlägg
#2
      session_start();
      if (!isset($_SESSION['Id']) || strlen(trim($_SESSION['Id'])) == 0) {
            header ( "Location: login.php" );
         Exit;
      }
Medlem sedan mars 20025 907 inlägg
#3

Det låter som ett klassiskt Register_globals problem. Om inte jag är helt fel ute nu så kommer alla variabler du skapar (ex $id i det här fallet) att replikeras till $_SESSION['id'] också. En tänkbar lösning på problemet är att stänga av register_globals eller att göra någon form av kontroll på $_SESSION['id'] så den innehåller vad du tror att den innehåller (och inte bara finns!)!

Medlem sedan mars 20032 667 inlägg
#4

Peeers analys låter rimlig. Jag missuppfattade nog din fråga. :(

Medlem sedan dec. 2002227 inlägg
#5

Nej, tror inte det. Jag har register globals avstängt. Det är liksom inte egentligen något problem, jag bara undrar om det är säkert att skriva sin kod så:

if(isset($_SESSION["id"])) { //Om man är inloggad
  echo "Du är inloggad";
} else {
  header("Location: login.php?error=1");
}

Är det inte nu möjligt för vem som helst att skriva ett litet php script där dom sätter en sessionvariabel kallad "id" till något. Kommer dom då inte in på min sida, trots att de inte kört mitt inloggningsscript?

Medlem sedan mars 20032 667 inlägg
#6

pakmannen skrev:

Är det inte nu möjligt för vem som helst att skriva ett litet php script där dom sätter en sessionvariabel kallad "id" till något. Kommer dom då inte in på min sida, trots att de inte kört mitt inloggningsscript?

Nej, inte enkelt i varje fall eftersom en sessionvaiabel är knuten till en viss server.

Medlem sedan dec. 2002227 inlägg
#7

Aha, då tror jag att jag fattar. Så när jag kollar om sessionsvariablen är satt så är det en variabel knuten till min server som det handlar om? Låter ju ganska smart faktiskt. :P

Tack för förklaringen!

264 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
126 ms — deklarationer (db)
0 ms — hämta statistik (cache)
135 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)