21. juni 2004 - 20:58Der er
10 kommentarer og 1 løsning
Sessions på eksisterende loginsystem
Jeg har et adminstrationssystem, som dog er meget dårligt sikret. Således kan man blot ved at skrive admin-filens adresse som URL komme derind. Jeg har gennem længere tid forsøgt mig frem med sessions, men kan ikek få det til at virke.
Jeg har nu denne kode, og vil gerne have en venlig sjæl til at kode det som så små og store bogstaver er ligemeget + en "secret file" hvor man ikke kan komme ind medmindre man har indtastet brugernavn og password, altså logget ind:
<? include("../inc/db.php");
$query = mysql_query("SELECT * FROM superhosting_admins") or die(mysql_error()); while ($row = mysql_fetch_assoc($query)) {
if($row[navn] == $_POST[navn] AND $row[kode] == $_POST[kode]) {
$equery = mysql_query("SELECT * FROM superhosting_admins WHERE navn = '$_POST[navn]'") or die(mysql_error()); while ($e_row = mysql_fetch_assoc($equery)) { $status = $e_row[status];
if($status == 1) { include("menu.php"); echo "<br><center><table border=0 width=450 class=td_med_skygge><tr><td>Du er nu logget ind.</td></tr></table></center>";
} else { echo "<br><center><table border=0 width=450 class=td_med_skygge><tr><td>Du kunne ikke logges ind.</td></tr></table></center>"; }
} } } ?>
Der må gerne følge en lille forklaring i sessions, og hvilke gruber man som regel falder i i starten, for jeg kan virkelig ikke finde ud af det og har aldrig kunnet..
Jeg har kodet det lidt om, håber du kan bruge det ;)
<? include("../inc/db.php");
if (session_is_registered("sessionSuperAdminStatus")){ if ($_SESSION["sessionSuperAdminStatus"] == 1){ include("menu.php"); echo "<br><center><table border=0 width=450 class=td_med_skygge><tr><td>Du er nu logget ind.</td></tr></table></center>";
} else { echo "<br><center><table border=0 width=450 class=td_med_skygge><tr><td>Du kunne ikke logges ind.</td></tr></table></center>"; }
$sql = "select * from superhosting_admins where navn LIKE '$navn' and kode LIKE '$kode'"; $res = mysql_query($sql) or die(mysql_error()); if (mysql_num_rows($res) > 0){ // hvis der er en bruger $obj = mysql_fetch_object($res); session_register("sessionSuperAdminStatus"); $_SESSION["sessionSuperAdminStatus"] = $obj -> status; }
} else { //lav en login form der poster til samme side her.
Hov... Der skulle have været en header("Location: filnavn.php"); ind i midten!
Du får den lige med formfeltet også, så skal filen bare hedde index.php... ------ <? include("../inc/db.php");
if (session_is_registered("sessionSuperAdminStatus")){ if ($_SESSION["sessionSuperAdminStatus"] == 1){ include("menu.php"); echo "<br><center><table border=0 width=450 class=td_med_skygge><tr><td>Du er nu logget ind.</td></tr></table></center>";
} else { echo "<br><center><table border=0 width=450 class=td_med_skygge><tr><td>Du kunne ikke logges ind.</td></tr></table></center>"; }
$sql = "select * from superhosting_admins where navn LIKE '$navn' and kode LIKE '$kode'"; $res = mysql_query($sql) or die(mysql_error()); if (mysql_num_rows($res) > 0){ // hvis der er en bruger $obj = mysql_fetch_object($res); session_register("sessionSuperAdminStatus"); $_SESSION["sessionSuperAdminStatus"] = $obj -> status; } header("Location: index.php");
} else { //lav en login form der poster til samme side her. ?> <form action="index.php" method="post"> <input type="text" name="navn"> <input type="text" name="kode"> </form>
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.