Philipp Hasenfratz: Registrier Script

Beitrag lesen

Halihallo

Ich bin zwar grad auf'm Sprung ins Bettchen zu hüpfen, aber einige Gedanken möcht ich vorher noch loswerden...

Also ich habe ein Formular, in das ich meine Daten zum registrieren ( $username, $passwort und $email ) eingebe und die werden dann an die folgende Seite, die ich auch hier reinkopiert habe, weitergegeben. FUnktioniert alles wunderbar, wie ich es möchte. Bis er die Sachen in die DB eintragen soll.

Also, das unten gepostete Script heisst doch 'take.php', oder? - Wenn du noch kein "QueryString" (nachfolgend kommt noch eine kleine Anmerkung hierzu) übergibst, erscheint die Frage, ob denn alle Daten richtig eingegeben wurden; bestätigt der Benutzer, wird das selbe Script wieder aufgerufen, aber diesesmal mit dem QueryString "register". Jetzt erscheint die Meldung, dass nicht alle Felder ausgefüllt sind, richtig? - Nun, dieses Verhalten ist ganz verständlich:
Beim erneuten Aufruf, übergibst du ja die username, password und email Daten gar nicht mehr und dann hat dein Script auch ganz berechtigt gescholten (es soll ja genau diese Dateninkonsistenz abfangen). Die Variablen $username, ... sind ja nur für die aktuelle "Instanz" des Programmes gültig und werden auf dem Server _nicht_ gespeichert.
Das mit dem QueryString würde ich eigentlich generell sein lassen, da du dich dann manuell um eventuelle Codierungen kümmern musst (z. B. werden dir Returns als %.. kodiert, etc.)
Lösung:

dort wo du folgendes ausgiebst:
print "<br /><br />Alle Angaben korrekt ? Dann klicke <a href='take.php?register'>hier</a> um deine Registrierung abzusenden, andernfalls gehe <a href='javascript:history.back();'>zurück</a> um deine Daten zu ändern ";

musst du erneut ein Formular ausgeben, mit einigen hidden-fields, wo du die genannten Daten nochmals einträgst, also

echo "Alle Angaben korrekt?
<form action='take.php'>
<input type='hidden' name='username' value='" . $username. "' />
<input type='...' ...>
<input type='hidden' name='modus' value='register' />
Dann klicke
<a href='' onClick='this.form.submit(); return false;'>hier</a> um deine Registrierung...";

das Feld 'modus' hab ich übrigens aufgenommen als QueryString Ersatz. Jetzt musst du einfach prüfen, ob die Variable $modus leer, oder mit 'register' gefüllt ist; das ist die bessere Variante, als mit dem ${QUERY_STRING} - Zeug...

Nachstehen hab ich das Script hier reinkopiert, ich hoffe, es wird richtig dargestellt, so das hr was mit anfangen könnt.

Ja, damit kann man viel anfangen ;)

nun noch einige sonstige Anmerkungen:

if ($conn)

wo kommt denn dieses $conn her? - Connection, ich weiss, aber wo stellst du diese her? - der Include admin/connect.php folgt ja erst später...

else if (!$conn)

die "bessere" if Konstruktion wäre:

if (bedingung) {
   das mache ich, wenn die Bedingung war ist
} else {
   was mache ich sonst
}

lass doch das else if (!$conn); das ist nur unnötige Tipparbeit ;-)

if (${QUERY_STRING}=="register")

pfui, pfui, pfui ;-) [oben beschrieben ;)]

Viele Grüsse und gute Nacht

Philipp

PS: Mehr folgt morgen, da ich merke, dass meine Konzentration stark nachgelassen hat und es keinen Sinn macht hier noch weiter einzugehen (das werde ich erst morgen wieder machen)... Sonst erzähl ich hier noch Müll (wenn ich's nicht schon tat???) und das woll'ma ja nicht...