Schau, du möchtest was und nicht ich. Wenn du dich weigerst eine vernünftige Fehlerbeschreibung zu liefern, dann lassen wir es einfach bleiben. Ich hab kein Problem damit.
Login-Abfrage über txt-Datei
Einklappen
X
-
Ich verstehe nur nicht, warum das von Bedeutung ist und inwiefern das mein Problem lösen könnte.
Also ich habs jetzt mit file probiert (s.Code):
$datei=file('benutzernamen.txt',"r") ;
while (!feof($datei)) //while sorgt dafür, dass die Datei bis zum Ende ausgelesen wird
{
$zeilenArray = fgets($datei);
echo "Nutzer enthalten";
}
fclose($datei);
und erhalte folgende Fehlermeldung:
Warning: file() expects parameter 2 to be long, string given in /users/hanan/www/uebung4.php on line 136
Warning: feof() expects parameter 1 to be resource, null given in /users/hanan/www/uebung4.php on line 137
Warning: fgets() expects parameter 1 to be resource, null given in /users/hanan/www/uebung4.php on line 139
Nutzer enthalten
Warning: feof() expects parameter 1 to be resource, null given in /users/hanan/www/uebung4.php on line 137
usw.usw.
Kommentar
-
file() kennt keinen zweiten Parameter 'r'. Den hast du erfunden, im PHP-Handbuch steht der nicht. Siehe:
PHP: file - Manual
file() liefert außerdem bereits ein Array. Warum tust du dann noch mit feof(), fgets() und flocse() herum? Sowas kommt im PHP-Handbuch auch nicht vor.
Kommentar
-
Zitat von Hananananan Beitrag anzeigenAber wie kann ich jetzt die txt auslesen
und überprüfen, ob der Name nun vorhanden ist?I don't believe in rebirth. Actually, I never did in my whole lives.
Kommentar
-
Zitat von Hananananan Beitrag anzeigenJa genau das kriege ich ja nicht hin mit dem in_array :S
Zeig deinen Code, und erkläre detailiert was er machen soll.I don't believe in rebirth. Actually, I never did in my whole lives.
Kommentar
-
Alles was ich mit in_array versucht hatte, habe ich wieder verworfen, weil es nicht geklappt hat. Daher brauche ich einen neuen Ansatz. Mein Skript kannst du ja dem Thread entnehmen. Also ich weiß nicht, wie in mithilfe von in_array überprüfen kann, ob der eingetragene Benutzername in der txt-Datei vorhanden ist oder nicht. Das möchte ich dementsprechend ausgeben (mit true/false).
Kommentar
-
Zitat von Hananananan Beitrag anzeigenAlso ich weiß nicht, wie in mithilfe von in_array überprüfen kann, ob der eingetragene Benutzername in der txt-Datei vorhanden ist oder nicht.
- Textdatei mittels file() in Array einlesen
- mit var_dump kontrollieren(!), ob die Daten auch tatsächlich so vorliegen, wie du annimmst (genau ein Benutzername pro Array-Eintrag)
- wenn ja, einfach in_array anwenden, dann hast du dein Ergebnis in Form von true oder falseI don't believe in rebirth. Actually, I never did in my whole lives.
Kommentar
-
Hi,
also ich habe jetzt folgendes Skript:
<html>
<body>
<form action="test.php" method="post" name="form1">
Dein User-Name:<br>
<input type="text" size="24" maxlength="50" name="username" value=""> <br><br>
<input type="submit" value="Registieren">
</form>
<?php
if(isset($_POST['username'])) $username = $_POST['username']; else $username="";
$user_vorhanden = array();
$userdatei = fopen ("benutzernamen.txt","r");
while (!feof($userdatei))
{
$zeile = fgets($userdatei,500);
$userdata = explode("|", $zeile);
array_push ($user_vorhanden,$userdata[0]);
}
fclose($userdatei);
if (in_array($username,$user_vorhanden))
{
echo "Username schon vorhanden";
}
else
{
$userdatei = fopen ("benutzernamen.txt","a");
fwrite($userdatei, $username);
fwrite($userdatei, "|");
fwrite($userdatei, "\n");
fclose($userdatei);
echo "$username, deine Anmeldung war erfolgreich";
}
$zeilenArray = file('benutzernamen.txt');
//Ausgeben des Arrays mit einer foreach Schleife
foreach ($zeilenArray as $zeilenNummer => $zeile) {
echo "<br>Benutzer: <b>".$zeilenNummer."</b> : " . $zeile . "\n";
}
?>
Die Ausgabe sieht dann ungefähr so aus
hans|
peter|
Wie kriege ich dieses Zeichen "|" da weg. Hab schon alles versucht, es hängt wohl mit explode zusammen. Wenn ich es ändere funktioniert das Skript nicht mehr. Sprich, es wird immer ein neuer Name gespeichert, obwohl er schon vorhanden ist.
Kommentar
-
Um ehrlich zu sein habe ich das Skript im Internet gefunden und etwas angepasst und verändert. Als ich versucht habe dieses Zeichen weg zumachen, hat das Skript nicht mehr richtig funktioniert. Also, wie ich schon gesagt habe, der Fehler ist, dass der eingetragene Nutzername immer wieder neu eingetragen wird, obwohl der gleiche schon vorhanden ist. Außerdem werden durch explode unnötige Leerzeichen entfernt, die wieder erscheinen, wenn ich die Funktion ändere.
Kommentar
-
$userdata = explode("|", $zeile);
array_push ($user_vorhanden,$userdata[0]);
}
fwrite($userdatei, "|");
Ich verstehe zwar was es macht, ich weiß aber nicht, wie ich | das Zeichen in der Ausgabe wegbekomme.
Ich versuche den Code selbst zu schreiben und ihn zu verstehen. Aber wenn ich das nicht hinkriege und das Internet solche Skripts bietet, warum soll ich die nicht benutzen und damit weiter arbeiten .
Kommentar
Kommentar