password übereinstimmung?

hi,
ich hoff ich kann das jetzt halbwegs beschreiben was ich meine ;)
also ich habe in einer tabelle mehrere benutzer und deren passwörter angelegt.
aber nun frage ich mich, wie mein script erkennt, ob die eingegebenen daten mit welchen auf der db übereinstimmen? also wenn die eingabe zb in den variablen $pw und $nick gespeichert werden wie erstelle ich dann die if-abfrage?
if ($pw && $nickname == *bla*) also was muss ich statt dem *bla* einfügen damit er sucht ob die daten mit welchen auf der db übereinstimmen, und wenn ja, weitergeleitet wird? und natürlich müsste ich dann auch irgendwie wissen welcher datensatz das was?
 
Du gibst im Login-Formular Usernamen und Passwort ein.
Danach suchst Du in der Datenbank den Eintrag des Usernamens und vergleichst das eingegebene Passwort.
Wenn das eingegebene Passwort mit dem in der Datenbank uebereinstimmt kannst Du z.B. einen Session-Cookie setzen in dem die UserID gespeichert ist und die anderen Seiten checken nur ob dieser Cookie exisitiert und reagieren dementsprechend.
Meine login.php:
PHP:
<?
$login=$_POST["login"];
if ($login)
 {
  $username=$_POST["username"];
  $password=$_POST["password"];
  $savelogin=$_POST["savelogin"];
  if (($username) && ($password))
   {
    $users=mysql_query("select * from users where username='$username'",$db);
    $user=mysql_fetch_array($users);
    if ($user)
     {
      $cryptedpassword=sha1($password);
      if ($cryptedpassword==$user[2])
       {
        if ($savelogin)
         {
          setcookie("id",$user[0],time()+2592000);
          setcookie("password",$cryptedpassword,time()+2592000);
         }
        $_SESSION["id"]=$user[0];
        mysql_query("update sessions set userid='$user[0]' where sessionid='$sessionid'",$db);
        header("Location:index.php".$sessionparm);
       }
      else
       {
        printf("Invalid password");
       }
     }
    else
     {
      printf("Invalid username");
     }
   }
  else
   {
    if (!$username)
     {
      printf("No username<br>");
     }
    if (!$password)
     {
      printf("No password<br>");
     }
   }
 }
?>
<form method="post" action="index.php?subsite=login.php<? printf($sessionparm_link); ?>">
<table class="vistable">
<tr><td>Username:</td><td><input type="text" name="username"></td></tr>
<tr><td>Password:</td><td><input type="password" name="password"></td></tr>
</table>
<?
if ($session[2]=="1")
 {
  ?>
  Stay logged in:
  <input type="checkbox" name="savelogin"><br>
  <?
 }
?>
<input type="submit" name="login" value="Login">
</form>
 
Oder vielleicht zur Sicherheit die schöne crypt()-Funktion nutzen (http://de3.php.net/manual/de/function.crypt.php).
Ein kleines Beispiel...
PHP:
function random ($len)
{
  $times = ($len % 40) + 1;
  $random = "";
  for ($i = 0; $i < $times; $i++)
  {
    mt_srand((double)microtime()*1000000);
    $r = mt_rand();
    $random .= sha1(uniqid($r,TRUE));
  }
  return substr ($random, 0, $len);
}

// salt holen
if (CRYPT_BLOWFISH) {
  $salt = '$2$' . random (13);
} else if (CRYPT_MD5) {
  $salt = '$1$' . random (9);
} else if (CRYPT_EXT_DES) {
  $salt = random(9);
} else {
  $salt = random (2);
}
$pass = 'geheim';
$pass_zum_speichern_in_datenbank = crypt ($pass, $salt);

// die Überprüfung
$pass_eingegeben_von_benutzer = 'geheim';
$pass_geholt_aus_datenbank = $pass_zum_speichern_in_datenbank;
if ($pass_geholt_aus_datenbank == crypt ($pass_eingegeben_von_benutzer, $pass_geholt_aus_datenbank)) {
  echo 'Passwort korrekt';
} else {
  echo 'Passwort inkorrekt';
}
 
also das mit den sessions versteh ich ned so wirklich aber zu mindest hab ich schonmal verstanden wie ich weiterleit wenn die eingabe stimmt :)
gibts noch ne einfachere weise festzustellen ob die eingabe ned stimmt? irgendwie mit if_exist oder sowas? gibts das?
 
Mir fallen 3 Moeglichkeiten ein wie Du das mit dem Login realisieren kannst.
1. Sessions
2. Cookies
3. User-Daten ueber die URL uebermitteln
 
Zurück