webForumDet fria alternativet

Hjälp med session vid inloggning

PHP

4 svar · 331 visningar · startad av Blockqoute

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

Om jag skapar min session till ett inloggningsskript så här:

session_register("id");
session_register("anvandarnamn");
session_register("kodat_losenord");
header("location:loginklar.php");

Hur gör jag då på sidan där inloggningen är klar om jag vill få fram id-numret så jag kan fortsätta anpassa sidan mer personligt?

Så här kontrolleras sessionen:

session_start();
if(!session_is_registered(anvandarnamn)){
header("location:lanalas.php");
}
Medlem sedan dec. 200380 inlägg
#2

Har ändrat runt lite nu, men det vill naturligtvis inte fungera riktigt. Inloggningsskriptet ser ut som följer (består av 3 sidor):

<form name="login" method="post" action="inloggad.php">
<table border="0" width="203" class="tbl_right2"><tr><td align="center">
<table width="150" border="0"><tr><td>
<b>Logga in<b></td></tr>
<tr><td>
Användarnamn:<br>
<input type="text" id="anvandarnamn" name="anvandarnamn" maxlength="30" size="20">
</td></tr>
</table></td></tr>
<tr><td align="center">
<table width="150" border="0"><tr><td>
Lösenord:<br>
<input type="password" id="losenord" name="losenord" maxlength="30" size="20">
<br></td></tr>
<tr><td><input type="submit" name="registrera" value="Logga in" style="font-family: Verdana; color: #000000; font-size: 9px; background-color: #E1E1E1; border: 3px outset #8B8B8B"></td></tr>
</table></td></tr>

</table>
</form>

Andra, den sida som ska kontrollera inloggningen:

$anvandarnamn=$_POST['anvandarnamn'];  //Här är jag lite fundersam på om detta fungerar.
$losenord=$_POST['losenord'];  //Här är jag lite fundersam på om detta fungerar.

$kodat_losenord=md5($losenord);

$sql="SELECT * FROM medlem WHERE anvandarnamn='$anvandarnamn' AND losenord='$kodat_losenord'";
$result=mysql_query($sql);

$count=mysql_num_rows($result);

if($count == 1){
  $_SESSION['id'] = $id;
  $_SESSION['anvandarnamn'] = $anvandarnamn;
  $_SESSION['kodat_losenord'] = $kodat_losenord;
  header("location:loginklar.php");
  }
else{
  $fel = "Felaktigt användarnamn eller lösenord";
}

Jag har markerat i koden ovan ett ställe där jag är lite fundersam på om det verkligen fungerar.

Tredje, den sida man ska komma till när allt fungerar:

session_start();
// om session tilldelad, login = ok.
if(!isset($_SESSION['id'])){
header("location:lanalas.php");
}

Det som verkar hända är att det inte bli någon session satt, jag hittar då ingen fil iaf. Och inloggningen fungerar inte alltså. Kontrollen av inloggningen verkar fungera, för skriver jag fel så kommer jag till felmeddelandet, men när jag skriver rätt så loggas jag inte in utan kommer tillbaka till "startsidan" för inloggningen. Någon som ser något uppenbart som ska ändras eller något som inte är uppenbart?

Medlem sedan juni 20031 837 inlägg
#3

tänk på att du måste ha med session_start() på alla sidor du använder $_SESSION.

Medlem sedan juni 20006 031 inlägg
#4

När du registrerar sessionen så har du ju vad jag kan se inget värde på $id.

$_SESSION['id'] = $id;

ändra till

$_SESSION['id'] = mysql_result($result, 0);

så den får ett värde.

Medlem sedan dec. 200380 inlägg
#5

Fungerade kanon! Tack så mycket till alla!

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