Benutzer und Passwort

InTocNiCo

Grünschnabel
<html>
<head>
<title></title>
<meta name="author" content="Tritschler.Steffen">
<meta name="generator" content="Ulli Meybohms HTML EDITOR">
</head>
<body text="#000000" bgcolor="#FFFFFF" link="#FF0000" alink="#FF0000" vlink="#FF0000">
PHP:
<?
$logok = FALSE;
if (isset($_login) and isset($_pass)){
  $fp = fopen("hans.txt","r+");
  while ($line = fgets($fp)){
    $arr = explode (",",$line);
    if (($arr[0] == $_login) and ($arr[1] == $_pass)){
      $logok = TRUE;
      echo "MOIN :)";
      break;
    }
  }
}
if (!$logok):
  ?>
Bitte geben sie Namen und Kennwort ein:<p>
<FORM method=post action="<? echo $PHP_SELF ?>">
Name: <input type="text" size="30" name="_login"><br>
Kennwort: <input type="password" size="30"name="_pass"><br>
<input type="submit" name="submit" value="Anmeldung">
</FORM>
<p>
PHP:
<?
endif;
?>


</body>
</html>

In der Datei Hans.txt stehen die Benutzer sowie die Passwörter.
Hans.txt sieht so aus:
__________________________
Alf,akjsdfhk
Dieter,abc
Benutzer,Passwort
...
__________________________

Frage:
Es funktioniert immer nur mit dem letzten Benutzer, also nicht mit Alf oder Dieter. Sondern nur mit Benutzer. Woran kann das liegen? und was muss ich ändern.
 
Versuch mal das:
PHP:
<?php
if(isset($_POST['user'], $_POST['pass'])) {
    if($lines = file("hans.txt")) {
        $log = false;
        foreach($lines as $value) {
            $user = preg_replace('/^(.*),.*$/U', '\\1', $value);
            $pass = trim(preg_replace('/^.*,(.*)$/U', '\\1', $value));
            if($_POST['user'] == $user AND $_POST['pass'] == $pass) {
                $log = true;
                break;
            }
        }
        if($log) {
            echo "Willkommen im Adminbereich.";
        }
        else {
            echo "Der Login ist fehlgeschlagen!";
        }
    }
    else {
        echo "Öffnen des Files fehlgeschlagen!";
    }
}
else {
    echo "Formular";
}
?>
mfg
split

PS: [phpf]file[/phpf] gibt ein Array, in dem jede Zeile in einem Element gespeichert wird aus. [phpf]trim[/phpf] muss man verwenden, um das durch [phpf]file[/phpf] am Zeilenende hinzugefügte "\0", so wie das Leerzeichen nach dem Komma zu entfernern.
 
Zuletzt bearbeitet:
Zurück