Anmeldeskript funktioniert nicht immer

schiese

Erfahrenes Mitglied
Hi, bin grad dabei ein Anmeldeskript zu schreiben. Es soll prüfen ob ein Name schon existiert oder nicht. Wenn er schon existiert, muss man sich einen andern Namen aussuchen, gibt es ihn noch nicht, kann man sich anmelden. Jetzt habe ich nur das Problem, dass es nicht immer funktioniert. Also, mal funktioniert es, mal nicht.

PHP:
$daten = file("textdatei.txt");
for ($y=0;$y<count($daten);$y++) {
	$zeile = $daten[$y];
	$einzelnezeile = explode("|--|",$zeile);
	if ( $einzelnezeile[0] == $_POST['useranm'] ) {
		$obvorhanden = "vorhanden";
} else {
		$obvorhanden = "";
}
		
}

if ( $obvorhanden == "vorhanden" ) {
	echo "Benutzername existiert schon!";
	exit;
} else {
anderer Code

Die Textdatei sieht so aus:
Code:
username|--|passwort|--|...|--|....|--|.....|---|...|--|

schiese
 
Hallo,
so vielleicht:
PHP:
$daten = file("textdatei.txt");
for ($y=0;$y<count($daten);$y++) {
    $zeile = $daten[$y];
    $einzelnezeile = explode("|--|",$zeile);
    if ( $einzelnezeile[0] == $_POST['useranm'] ) {
        $obvorhanden = "vorhanden";
        break;
} else {
        $obvorhanden = "";
}
        
}

if ( $obvorhanden == "vorhanden" ) {
    echo "Benutzername existiert schon!";
    exit;
} else {
    //anderer Code
}
Das [phpf]break[/phpf] ist dafür zuständig, dass die Schleife abgebrochen wird, wenn der User bereits existiert, da die Variable $obvorhanden sonst beim nächsten Durchlauf überschrieben wird.

mfg
forsterm
 
Zuletzt bearbeitet:
Auch das beantwortet deine Frage nicht, aber: Wieso arbeitest du nicht mit einer Datenbank? Denn was ist, wenn ein Benutzer das System im Hintergrund kennt und somit ein „|--|“ im Benutzernamen einträgt? Eine Datenbank würde das alles überflüssig machen.
 
@daddz: Zu Versuchszwecken ja. Wenn das Skript fertig ist, natürlich nicht mehr! Das einzubauen ist aber der kleinste Teil der Arbeit!

@forsterm: Danke, so funktioniert es! Aber wieso liegt es am break?

@Gumbo: Weil ich mich nicht mit Datenbanken auskenne und im Moment keine Zeit habe, das zu lernen. Ich benutze kein |--|. Habe da schon ein bischen was anderes. Ist es schwierig, sich da reinzufuchsen?

schiese
 
Eigentlich nicht. Die grundlegenden Dinge sind schnell gelernt. MySQL ist beispielsweise ein weit verbreitetes Open-Source-Datenbankverwaltungssystem.
 
Hallo!

Ich würde mich auch für eine Datenbank entscheiden.
Vorzugsweise, da weit verbreitet und dem entsprechend viel Hilfe zu finden ist, würde ich MySQL wählen.
Wie Du an Gumbo seinem Link sehen kannst, ist MySQL ausserdem für die wesentlichsten Betriebssysteme verfügbar..... was man z.b. von Microsoft SQL nicht behaupten kann. ;)

Um mal bei Deiner Benutzerverwaltung auf Basis einer Textdatei zu bleiben.....
Einen neuen Benutzer hinzufügen ist ja noch einfach, aber wenn es mal darum geht einen Benutzer zu löschen oder ihm ein neues Passwort zuzuteilen, wird es schon komplizierter/komplexer als mit MySQL.

Neben den zahlreichen Beiträgen hier im Forum, könntest Du auch einen Blick auf z.b. Schattenbaum werfen. ;)

Gruss Dr Dau
 
Übrigens bietet sich für die Verarbeitung von CSV-Daten an, auch die dafür gedachte PHP-Funktion zu verwenden: [phpf]fgetcsv[/phpf]
 
Zurück