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"); } } ?>
AI bliver først for alvor en del af arbejdet, når teknologien integreres i den måde, vi arbejder på. At have adgang til AI betyder ikke nødvendigvis, at medarbejderne er klar til at bruge den.
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.