PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : PHP Anfänger Regisrierung Script?



Roki
01-11-2009, 12:07
Hallo Alle,

ich habe ein Registrierung Formular erstellt, der so aussieht:

<form method="post" action="check.php">
<label for="username">Vorname: </label><br />
<input type="text" name="vorname" id="vorname"><br />
<label for="username">Nachname: </label><br />
<input type="text" name="nachname" id="nachname"><br />
<label for="password">Password: </label><br />
<input type="password" name="password" id="password"><br />
<label for="password2">Wiederholen: </label><br />
<input type="password" name="password2" id="password2"><br>
<label for="email">Geb. Datum:</label><br />
<input type="text" name="geb" id="geb"><br />
<input type="submit" name="submit" id="submit" value="Senden">
</form>

die datei:"liste" sieht so aus:

Vorname1#Nachname1#Geburtsadatum
Vorname2#Nachname2#Geburtsadatum
Vorname3#Nachname3#Geburtsadatum
usw.
zb.

Stefan#Müller#011109
Maria#Magdalena#090909
Angela#Kruse#080808
usw.

nachdem der Benutzer alles augefüllt hat, soll erst überprüft werden ob Vorname Nachname und Geburstdatum übereinstimmen.

check.php sieht so aus:

<?php
// eingabe.php verknuepfen.
include("eingabe.php");
// nach dem der Benutzer auf Senden geklickt hat.
if(isset($_POST['submit'])) {
// Pruefen ob der Benutzer alles ausgefuellt hat.
if(empty($_POST['vorname']) ||
empty($_POST['nachname']) ||
empty($_POST['password']) ||
empty($_POST['password2']) ||
empty($_POST['geb'])) {
// falls leer, text ausgeben .
echo "Bitte alles ausfuelen.";
// Exit the code.
exit;
}
// fuer jeden feld variable erstellen $_POST.
$vorname = $_POST['vorname'];
$nachname = $_POST['nachname'];
$password = $_POST['password'];
$password2 = $_POST['password2'];
$geb = $_POST['geb'];

// jetzt die passwoerter ueberpruefen ob die gleich sind
if ($password == $password2) {
echo "Die Passwoerter sind identisch.";
echo "<br/>";
} else {
echo "Die Passwoerter sind nicht identisch";
echo "<br/>";
}

// Vorname, Nachname und Geb. ueberpruefen
$vorname_check = array();
$nachname_check = array();
$geb_check = array();

$userdatei = fopen ("/testphp/liste","r");
while (!feof($userdatei)) {
$zeile = fgets($userdatei);
$userdata = explode("#", $zeile);
array_push ($vorname_check,$userdata[0]);
array_push ($nachname_check,$userdata[1]);
array_push ($geb_check,$userdata[2]);
}
fclose($userdatei)

// Vorname ueberpruefen
if (in_array($vorname,$vorname_check)) {
echo "Vorname wurde gefunden.";
echo "<br/>";
} else {
echo "Vorname wurde nicht gefunden.";
echo "<br/>";
}

// Nachname ueberpruefen
if (in_array($nachname,$nachname_check)) {
echo "Nachname wurde gefunden.";
echo "<br/>";
} else {
echo "Nachname wurde nicht gefunden.";
echo "<br/>";
}

// Geburtsdatum ueperpruefen
if (in_array($geb,$geb_check)) {
echo "Geburtsadatum wurde gefunden.";
echo "<br/>";
} else {
echo "Geburtsdatum wurde nicht gefunden.";
echo "<br/>";
}

}
?>


check.php ist noch nicht fertig und es enthält (ich denke) mehrere (noob)-fehler! :confused:
das Script gibt nur aus ob Name Vorname und Geburstdatum in der liste existiert. Das Problem aber, gebe ich Stefan Müller und als Geb. Datum das von Maria Magdalena (090909), bekomme ich die ausgabe, das das Password stimmt...? wie mache ich, das Zeilenweise überprüft wird...? es muss mit 1 Zeile identisch sein...?



der Benutzer füllt die felder aus (ganz normal geschrieben):
Vorname: "Stefan"
Nachname: "Müller"
Password: "mindestens 5 zeichen"
Geb. Datum: "01.11.2009" (oder 011109...eben was man einen Anfänger leichter beibringen kann:confused:)

Nachdem der Benutzer alles ausgefüllt hat, bekommt jede eingabefeld eine variable:
$vorname
$nachname
$password
$geb

jetzt suche ich nach eine möglickeit die erstelle $variable mit inhalt einer liste zu vergleichen, falls die eingaben übereinstimmen:
Stefan#Müller#01.11.2009
soll Vorname und Nachname formatiert in: "stefan.mueller" und das passwort mit Tab (oder leer) getrennt, so sein:


stefan.mueller password
maria.magdalena password
angela.kruse password
usw.


und in einer datei gespeichert...ein neuer eintrag, soll in gleiche datei am ende hinzugefügt werden. (aber was passiert dann, wenn mehrere gleichzeitig in einer datei schreiben....? )

naja, ein anderes problem wäre noch das mit doppel Namen:
zb.

#Jan-Klod#Van Damm#181060

das sollte dann so hinzugefügt werden:

jan-klod.van-damm 181060

kann mir da jemand helfen?
Danke im Voraus!

MfG, Roki

zenobic
05-11-2009, 15:25
was passiert dann, wenn mehrere gleichzeitig in einer datei schreiben....?


http://php.net/flock

Ein `fehlgeschlagene' Registrierung mit Feedback an den User (wenn der Lock nicht erfolgen kann) ist besser als eine zerschossene Datei :)




naja, ein anderes problem wäre noch das mit doppel Namen


Leerzeichen könnte man durch _ oder + ersetzen ( und zur HTML Ausgabe durch &nbsp; ).



check.php


Die Postdaten könnte man noch trimmen ( http://php.net/trim ).



wie mache ich, das Zeilenweise überprüft wird...?


Das Array iterieren, z.B. mit http://php.net/foreach
(dazu muss die Datenstruktur ggf. etwas angepasst werden).