Ich habe eine Aufgabe, wo ich eine Registerseite erstellen muss und überprüfen, ob ein Benutzer nicht bereits in einer TXT-Datei vorhanden ist. Ich habe einige Antworten online gefunden und versucht, sie anzuwenden, scheint aber nicht für mich zu funktionieren. alles funktioniert außer dem Teil, den er überprüfen muss. hier mein Code: dies ist mein CodeÜberprüfung, ob Benutzername existiert bereits in einer TXT-Datei, mit PHP
<?php
if($_POST['formSubmit'] == "Submit")
{
$errorMessage ="";
$link_Create = "CreateAnAccount.php";
$Username = $_POST['userName'];
$password = $_POST['Password'];
if(empty($_POST['userName']))
{
echo "<li>You forget to enter a UserName</li><a href='".$link_Create."'>Start again</a>";
header("Location:PopUp.html");
exit;
}
if(empty($_POST['Password']))
{
echo "<li>You forget to enter a Password</li><a href='".$link_Create."'>Start again</a>";
header("Location:PopUp.html");
exit;
}
if(!preg_match('/^(?=.*\d)(?=.*[A-Za-z])[[email protected]#$%]{4,24}$/', $password))
{
echo "<li>Your Password input was wrong, please notice Paswword most be at least 4 characters long, have at least one letter and at least one digit. </li><a href='".$link_Create."'>Start again</a>";
header("Location:PopUp.html");
exit;
}
if(empty($errorMessage)){
$userlist = fopen("login.txt","r");
$success = true;
foreach ($userlist as $user) {
$user_details = explode('|', $user);
if ($user_details[0] == $Username) {
$success = false;
break;
}
}
fclose($userlist);
if ($success==true) {
$writer = fopen("login.txt", "a") or die("Unable to open file.");
fwrite($writer,$Username."|");
fwrite($writer,$password."\n");
fclose($writer);
echo "<br>You have been logged in. <br>";
header("Location:PopUp.html");
exit;
}
else {
echo "<li>This User Name already exist!</li><a href='".$link_Create."'>Start again</a>";
header("Location:PopUp.html");
exit;
}
}
}
?>
Lassen Sie mich wissen, ob es die Notwendigkeit meines HTML-Code ist, aber ich glaube nicht, dass keine Auswirkungen auf die Frage hat. Vielen Dank Ich schätze die Hilfe.
was ist Ihre aktuelle Ausgabe? Erhalten Sie Fehler? – cmorrissey
Sie lesen die Datei nie wirklich. Sie öffnen es nur: '$ userlist = fopen (" login.txt "," r ");'. 'fopen()' liest _nicht_ den Inhalt der geöffneten Datei. Sie sollten wirklich anfangen, die Dokumentation der Funktionen zu lesen, die Sie verwenden. – arkascha
Sie sollten '$ _POST ['userName']' validieren. Wenn der Name Ihr Trennzeichen ('|') enthält, wird Ihr Parser in der Zukunft unterbrochen. Ich würde dafür eine DB benutzen. Du könntest 'file_get_contents' verwenden, dann' explode' auf '' '' und dann iteriere durch die Namen .. oder benutze 'in_array' wenn du nichts mit ihnen machen musst – chris85