17. april 2004 - 17:42Der er
13 kommentarer og 1 løsning
sessions ved login
Hej jeg har bikset det her lille mysql/php login script sammen, men hvordan kan det være at når jeg logger ind med admin status, bliver jeg sendt videre til bruger status?
$query = mysql_query("SELECT username, password, type, id FROM user WHERE username='$username' AND password='$password'"); while($r = mysql_fetch_array($query)) { $s_username = $r["username"]; $s_password = $r["password"]; $s_type = $r["type"]; $s_id = $r["id"]; } session_start(); session_register ("s_username"); session_register ("s_password"); session_register ("s_type"); session_register ("s_id");
// er du admin kommer du her... if ($s_type == 'admin') { header("Location:admin.php"); // hvis du er bruger kommer du her... } else { header("Location:bruger.php"); } } ?>
Det ser rigtig ud, udover at du måske burde bruge $_SESSION istedet. Og så har du session_start() to steder.. Her er et forslag
<? session_start(); mysql_connect("localhost", "xxxxx", "xxxx"); mysql_select_db("loads007"); if(!isset($_POST['Submit'])) { echo "go to login"; }else{ $query = mysql_query("SELECT username, password, type, id FROM user WHERE username='$username' AND password='$password'"); while($r = mysql_fetch_array($query)) { $_SESSION['username'] = $r["username"]; $_SESSION['password'] = $r["password"]; $_SESSION['type'] = $r["type"]; $_SESSION['id'] = $r["id"]; }
// er du admin kommer du her... if ($_SESSION['type'] == 'admin') { header("Location:admin.php"); // hvis du er bruger kommer du her... } else { header("Location:bruger.php"); } } ?>
Array ( [s_brugernavn] => [s_password] => [s_usertype] => [s_id] => [s_username] => [s_type] => ) Warning: Cannot modify header information - headers already sent by (output started at /home/loads007/public_html/dologin1.php:15) in /home/loads007/public_html/dologin1.php on line 21
Ikke nødvendigvis, hvis den ikke kan finde nogen rækker der matcher, så kommer du slet ikke ind i din while()..
mangler du ikke en $username = $_POST['username']; // eller $_GET $password = $_POST['password']; // eller $_GET
før din mysql-query?
og du får stadig de gamle session-navne ('s_'-etellerandet).. Prøv lige at lukke din browser ned og sikre dig at du får en ny session så du ikek ser på gamle data.
<? session_start(); mysql_connect("localhost", xxxx", "xxxx"); mysql_select_db("loads007"); if(!isset($_POST['Submit'])) { echo "go to login"; }else{ $username = $_POST['username']; // eller $_GET $password = $_POST['password']; // eller $_GET
$query = mysql_query("SELECT username, password, type, id FROM user WHERE username='$username' AND password='$password'"); while($r = mysql_fetch_array($query)) { $_SESSION['username'] = $r["username"]; $_SESSION['password'] = $r["password"]; $_SESSION['type'] = $r["type"]; $_SESSION['id'] = $r["id"]; } // er du admin kommer du her... if ($_SESSION['type'] == 'admin') { header("Location:admin.php"); // hvis du er bruger kommer du her... } else { header("Location:bruger.php"); } } ?>
Og den viderefører stadig til bruger.php der skriver "print_r(Array);"
Kan det muligvis ha noget at gøre med min login? den ser sådan her ud :
Og jeg ville nok gøre det så'n: $query = mysql_query("SELECT username, type, id FROM user WHERE username='$username' AND password='$password'") or die (mysql_error()); if(mysql_num_rows($query) == 1) { $r = mysql_fetch_array($query); $_SESSION['username'] = $r["username"]; $_SESSION['type'] = $r["type"]; $_SESSION['id'] = $r["id"]; }
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.