Avatar billede ponzi Nybegynder
17. april 2004 - 17:42 Der 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?

Scriptet ser sådan her ud :

<?
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)) {
$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");
}
}
?>
Avatar billede dennismp Nybegynder
17. april 2004 - 17:49 #1
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");
  }
}
?>
Avatar billede dennismp Nybegynder
17. april 2004 - 17:50 #2
er du HELT sikker på at type rent faktisk er admin? :-)

prøv at skrive den ud og tjek selv.
Avatar billede ponzi Nybegynder
17. april 2004 - 18:17 #3
hmm det ændrede ikke rigtig noget :/
typer ser således ud : http://rrk.kollegienet.dk/~nanobyte/db.jpg
Avatar billede dennismp Nybegynder
17. april 2004 - 18:19 #4
prøv at tilføje
print_r($_SESSION);
ligefør "// er du admin kommer du her ... "
og smid outputtet her
Avatar billede ponzi Nybegynder
17. april 2004 - 18:25 #5
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
Avatar billede ponzi Nybegynder
17. april 2004 - 18:32 #6
det er sguda sort...? burde der ikke komme en sql error inden så?
Avatar billede dennismp Nybegynder
17. april 2004 - 18:37 #7
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.
Avatar billede ponzi Nybegynder
17. april 2004 - 18:54 #8
Nu ser min dologin.php sådan her ud:

<?
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 :

<? include("top.php"); ?>
<table width="84%" border="0">
  <tr>
    <td>
      <form name="form1" method="post" action="dologin1.php">
        <font size="1" face="Verdana, Arial, Helvetica, sans-serif">Username </font>
        <input type="text" name="username">
        <font size="1" face="Verdana, Arial, Helvetica, sans-serif">Password</font>
        <input type="password" name="password">
        <input type="submit" name="Submit" value="Send">
      </form>
    </td>
  </tr>
</table>
<? include("bottom.php"); ?>
Avatar billede sukos Juniormester
17. april 2004 - 19:00 #9
Og hvad siger den hvis du smider en or die på?

$query = mysql_query("SELECT username, password, type, id FROM user WHERE username='$username' AND password='$password'") or die (mysql_error());
Avatar billede sukos Juniormester
17. april 2004 - 19:03 #10
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"];
}

+ jeg ville kryptere password i DB'en :O)
Avatar billede ponzi Nybegynder
17. april 2004 - 19:10 #11
Smukt :õ) nu virker det..!
Tak for hjælpen!

sukos, kan du ik lige smide et svar, så splitter jeg pointene?

en hurtig sidste ting:
Hvordan tjekker jeg så om en user er logged ind?
noget med if(isset $_session['username']) ?
Avatar billede sukos Juniormester
17. april 2004 - 19:13 #12
if(mysql_num_rows($query) == 1) {
$r = mysql_fetch_array($query);
    $_SESSION['username'] = $r["username"];
    $_SESSION['type'] = $r["type"];
    $_SESSION['id'] = $r["id"];

  if ($_SESSION['type'] == 'admin') {
    header("Location:admin.php");
    // hvis du er bruger kommer du her...
  } else {
    header("Location:bruger.php");
  }

}

Og ja, (næsten da :O])

if(isset($_SESSION['username'])) {
..............
Avatar billede dennismp Nybegynder
17. april 2004 - 19:50 #13
selv tak :-|
Avatar billede sukos Juniormester
17. april 2004 - 20:22 #14
Her dennismp, så du osse får! :O)
http://eksperten.dk/spm/490379
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester