2017-09-10 7 views
0

Also, ich erstelle eine einfache Dateifreigabe-Site, die nur einen Benutzernamen zur Anmeldung akzeptiert. Aber selbst wenn ich den richtigen Benutzernamen haben, meint das Programm es unter falsch ist mein Code:Wie loggen Sie sich korrekt mit HTML und PHP ein?

<form method ="POST"> 
    <p> 
     <label for="user">User ID: </label><input type="text" name="userID" id="user" /> 
    </p> 
    <p> 
     <input type="submit" name = "LogIn" value="Log In" /> 
     <input type ="reset"/> 
    </p> 
</form> 

PHP Teil

<?php 
$users = file('users.txt'); 
if (isset($_POST['LogIn'])) { 
    echo $_POST['userID'].'<br>'; 
foreach ($users as $user) { 
    if ($_POST['userID']==$user){ 
     header("Location: FileShareLogInRedirect.php"); 
     exit; 
    } 
} 
echo "Wrong ID".'<br>'; 
?> 

Was ich tun könnte falsch? Es scheint, als ob es funktionieren sollte.

+0

Es funktioniert nur für einen Benutzer (roh) in der Datei users.txt. – b2ok

+1

Könnte ein Leerzeichen oder großgeschriebene Zeichen sein. Zeigen Sie den Inhalt der Datei und was Sie einreichen – Qirel

Antwort

0

Sie haben nicht

verzogen
echo "Wrong ID".'<br>'; 

in einer anderen Aussage. Beispiel:

<?php 
$users = file('users.txt'); 
if (isset($_POST['LogIn'])) { 
    echo $_POST['userID'].'<br>'; 
foreach ($users as $user) { 
    if ($_POST['userID']==$user){ 
     header("Location: FileShareLogInRedirect.php"); 
     exit; 
    } 
} 
else{ 
    echo "Wrong ID".'<br>'; 
} 
?> 

Ohne die sonst Anweisung Ihre echo Anweisung jedes Mal ausgeführt wird, unabhängig von Wetter das Login korrekt ist oder nicht.

1

Der Submit-Button-Wert wird NICHT gesendet zusammen mit dem POST.

Sie sollten die Übergabeschaltfläche nicht verwenden, um zu versuchen, Formularwerte zu übergeben.

<form method ="POST"> 
     <p> 
      <label for="user">User ID: </label><input type="text" name="userID" id="user" /> 
     </p> 
     <p> 
      <input type="submit" value="Log In" /> 
      <input type ="reset"/> 
     </p> 
    </form> 

PHP Teil

<?php 
$users = file('users.txt'); 
if (isset($_POST['userID'])) { 
    echo $_POST['userID'].'<br>'; 
foreach ($users as $user) { 
    if ($_POST['userID']==$user){ 
     header("Location: FileShareLogInRedirect.php"); 
     exit; 
    } 
} 
echo "Wrong ID".'<br>'; 
?> 
+0

Vielen Dank für Ihre Hilfe. Das ändert aber nichts. Mein Programm denkt immer noch, dass die richtigen Benutzernamen falsch sind – keon6

+0

"ändert nichts" ??? Machst du Witze??! Wie wäre es, den Leuten, die dir helfen wollen, ein bisschen Kredit zu geben? Dein Code würde bei isset ($ _ POST ['LogIn']) stoppen ... also wie ändert mein Code für dich "ändert nichts" ... ziemlich undankbar ... von dir ... Hier .. Hier sind einige weitere Hilfe, die Sie weiterhin undankbar sein können für ... Versuchen Sie, dies zu fügen, um zu sehen, was Sie in der Schleife erhalten: foreach ($ users as $ user) {echo $ user. "
";} Oder - poste den Inhalt von users.txt, damit wir sehen können, was drin ist. – Stnfordly

0

Funktionsdatei() kann durch Zeile nicht Prozess Reihe. Für die Verarbeitung in einem rohen Fall verwenden wir die Funktion in_array(). Funktion in_array() können wir nur verwenden, wenn wir die explizite Funktion array() haben. Aus diesem Grund benötigen wir Variable $ Benutzer, um gleich Array() zu sein. Anschließend laden Sie mit Hilfe der Funktion fopen() und loop While array() und anschließend die Funktion in_array(). Hier ist Code:

<form method ="POST"> 
    <p> 
     <label for="user">User ID: </label><input type="text" name="userID" id="user" /> 
    </p> 
    <p> 
     <input type="submit" name = "LogIn" value="Log In" /> 
     <input type ="reset"/> 
    </p> 
</form> 

<?php 
$users=array(); 
$fpn=fopen('users.txt', 'r'); 
while (!feof($fpn)) 
{ 
    $user=fgets($fpn); 
    $user=trim($user); 
    $users[]=$user; 
} 
if (in_array($_POST['userID'], $users)) { 
    header("Location: FileShareLogInRedirect.php"); 
     exit; 
} 
echo "Wrong ID".'<br>'; 
?> 
Verwandte Themen