Autor
|
Thread
|
03.01.2007 16:28 Uhr
|
Registrierungsformular funkt nicht!
|
mdean
|
Forenposter
|
|
registriert
|
03.01.2007
|
wohnt in
|
Schweiz
|
Beiträge
|
90
|
|
Ich bin mal das Tutorial von der Userverwaltung durchgegangen, hab es auf meine Page anwenden wollen, aber irgendwie geht's nicht. Ich weiss nicht worans liegt, aber irgendwie lädts einfach die site neu wenn ich auf senden klick und keine Fehlermeldungen werden angezeigt. Ich hoffe irgendwer kann mir helfen die Fehler zu beheben. Hier erstmal den code:
PHP:
<div id="register">
<form id="Registrierung" name="Registrierung" method="post" action="<?php $_SERVER['PHP_SELF'] ?>">
<?php
error_reporting(E_ALL);
$MYSQL_HOST = 'localhost';
$MYSQL_USER = 'jkjhk';
$MYSQL_PASS = 'fghfgh';
$MYSQL_DATA = 'hjkhjk';
$connid = @mysql_connect($MYSQL_HOST, $MYSQL_USER, $MYSQL_PASS) OR die("Error: ".mysql_error());
mysql_select_db($MYSQL_DATA) OR die("Error: ".mysql_error());
if(isset($_POST['submit']) AND $_POST['submit']=='Registrieren'){
$errors = array();
if(!isset($_POST['Nickname'],
$_POST['Passwort'],
$_POST['Passwortwiederholung'],
$_POST['Email'],
$_POST['Show_Email'],
$_POST['Homepage'],
$_POST['Wohnort']))
$errors = "Bitte benutzen Sie das Formular aus dem Registrierungsbereich";
else{
// Alle Nicknames und Emailadressen zum Vergleich aus der Datenbank holen
$nicknames = array();
$emails = array();
$sql = "SELECT
Nickname,
Email
FROM
User
";
$result = mysql_query($sql) OR die("<pre>\n".$sql."</pre>\n".mysql_error());
while($row = mysql_fetch_assoc($result)){
$nicknames[] = $row['Nickname'];
$emails[] = $row['Email'];
}
// Prüft, ob ein Nickname eingegeben wurde
if(trim($_POST['Nickname'])=='')
$errors[]= "Bitte geben Sie einen Nickname ein.";
// Prüft, ob der Nickname mindestens 3 Zeichen enthält
elseif(strlen(trim($_POST['Nickname'])) < 3)
$errors[]= "Ihr Name muss mindestens 3 Zeichen lang sein.";
// Prüft, ob der Nickname nur gültige Zeichen enthält
elseif(!preg_match('/^\w+$/', trim($_POST['Nickname'])))
$errors[]= "Benutzen Sie bitte nur alphanumerische Zeichen (Zahlen, Buchstaben und den Unterstrich).";
// Prüft, ob der Nickname bereits vergeben ist
elseif(in_array(trim($_POST['Nickname']), $nicknames))
$errors[]= "Dieser Nickname ist bereits vergeben.";
// Prüft, ob eine Email-Adresse eingegeben wurde
if(trim($_POST['Email'])=='')
$errors[]= "Bitte geben Sie Ihre Email-Adresse ein.";
// Prüft, ob die Email-Adresse gültig ist
elseif(!preg_match('§^[\w\.-]+@[\w\.-]+\.[\w]{2,4}$§', trim($_POST['Email'])))
$errors[]= "Ihre Email Adresse hat eine falsche Syntax.";
// Prüft, ob die Email-Adresse bereits vergeben ist
elseif(in_array(trim($_POST['Email']), $emails))
$errors[]= "Diese Email-Adresse ist bereits vergeben.";
// Prüft, ob ein Passwort eingegeben wurde
if(trim($_POST['Passwort'])=='')
$errors[]= "Bitte geben Sie Ihr Passwort ein.";
// Prüft, ob das Passwort mindestens 6 Zeichen enthält
elseif (strlen(trim($_POST['Passwort'])) < 8)
$errors[]= "Ihr Passwort muss mindestens 8 Zeichen lang sein.";
// Prüft, ob eine Passwortwiederholung eingegeben wurde
if(trim($_POST['Passwortwiederholung'])=='')
$errors[]= "Bitte wiederholen Sie Ihr Passwort.";
// Prüft, ob das Passwort und die Passwortwiederholung übereinstimmen
elseif (trim($_POST['Passwort']) != trim($_POST['Passwortwiederholung']))
$errors[]= "Ihre Passwortwiederholung war nicht korrekt.";
}
// Prüft, ob Fehler aufgetreten sind
if(count($errors)){
echo "Ihr Account konnte nicht erstellt werden. Sollte dies öfters vorkommen kontaktieren Sie den Webmaster.<br>\n".
"<br>\n";
foreach($errors as $error)
echo $error."<br>\n";
echo "<br>\n".
"Zurück zum <a href=\"".$_SERVER['PHP_SELF']."\">Registrierungsformular</a>\n";
}
else{
// Daten in die Datenbanktabelle einfügen
$sql = "INSERT INTO
User
(Nickname,
Email,
Passwort,
Show_Email,
Registrierungsdatum,
Wohnort,
Homepage
)
VALUES
('".mysql_real_escape_string(trim($_POST['Nickname']))."',
'".mysql_real_escape_string(trim($_POST['Email']))."',
'".md5(trim($_POST['Passwort']))."',
'".mysql_real_escape_string(trim($_POST['Show_Email']))."',
CURDATE(),
'".mysql_real_escape_string(trim($_POST['Wohnort']))."',
'".mysql_real_escape_string(trim($_POST['Homepage']))."'
)
";
mysql_query($sql) OR die("<pre>\n".$sql."</pre>\n".mysql_error());
echo "Vielen Dank!\n<br>".
"Ihr Accout wurde erfolgreich erstellt.\n<br>".
"Sie können sich nun mit Ihren Daten einloggen.\n<br>".
"<a href=\"login.php\">Zum Login</a>\n";
}
}
?>
<table width="71%" height="100%" border="0" align="center" cellpadding="0" cellspacing="0" id="formular_reg">
<tr>
<td width="30%" height="9%" align="left" valign="middle" class="inhalt">Nickname</td>
<td width="2%" align="right" valign="middle" class="inhalt">:</td>
<td width="45%" colspan="3" align="center" valign="middle" class="inhalt"><input name="Nickname" type="text" id="Nickname" size="30" maxlength="30" /></td>
<td width="2%" align="left" valign="middle" class="inhalt">*</td>
<td width="21%" class="inhalt">
</td>
</tr>
<tr>
<td height="9%" align="left" valign="middle" class="inhalt">Email</td>
<td align="right" valign="middle" class="inhalt">:</td>
<td colspan="3" align="center" valign="middle" class="inhalt"><input name="Email" type="text" id="Email" size="30" maxlength="70" /></td>
<td class="inhalt">*</td>
<td class="inhalt"> </td>
</tr>
<tr>
<td height="9%" align="left" valign="middle" class="inhalt">Passwort</td>
<td align="right" valign="middle" class="inhalt">:</td>
<td colspan="3" align="center" valign="middle" class="inhalt"><input name="Passwort" type="password" id="Passwort" size="30" maxlength="32" /></td>
<td class="inhalt">*</td>
<td class="inhalt"> </td>
</tr>
<tr>
<td height="9%" align="left" valign="middle" class="inhalt">Passwortwiederholung</td>
<td align="right" valign="middle" class="inhalt">:</td>
<td colspan="3" align="center" valign="middle" class="inhalt"><input name="Passwortwiederholung" type="password" id="Passwortwiederholung" size="30" maxlength="32" /></td>
<td class="inhalt">*</td>
<td class="inhalt"> </td>
</tr>
<tr>
<td height="12%" align="left" valign="middle" class="inhalt">Evtl. Newsletter erhalten </td>
<td align="right" valign="middle" class="inhalt">:</td>
<td colspan="3" align="center" valign="middle" class="inhalt">
<?php echo"<input type=\"radio\" name=\"Show_Email\" value=\"show\"> ja\n";
echo "<input type=\"radio\" name=\"Show_Email\" value=\"hide\" checked> nein\n"; ?></td>
<td class="inhalt">*</td>
<td class="inhalt"> </td>
</tr>
<tr>
<td height="9%" align="left" valign="middle" class="inhalt">Wohnort</td>
<td align="right" valign="middle" class="inhalt">:</td>
<td colspan="3" align="center" valign="middle" class="inhalt"><input name="Wohnort" type="text" id="Wohnort" size="30" maxlength="70" /></td>
<td class="inhalt"> </td>
<td class="inhalt"> </td>
</tr>
<tr>
<td height="9%" align="left" valign="middle" class="inhalt">Homepage</td>
<td align="right" valign="middle" class="inhalt">:</td>
<td colspan="3" align="center" valign="middle" class="inhalt"><input name="Homepage" type="text" id="Homepage" size="30" maxlength="70" /></td>
<td class="inhalt"> </td>
<td class="inhalt"> </td>
</tr>
<tr>
<td height="14%" align="left" valign="middle" class="inhalt">Nutzungsbedingungen</td>
<td align="right" valign="middle" class="inhalt">:</td>
<td colspan="3" align="center" valign="middle" class="inhalt"><input type="checkbox" name="checkbox" value="checkbox" />
Ich stimme den Nutzungsbedingungen zu</td>
<td class="inhalt"> </td>
<td class="inhalt"> </td>
</tr>
<tr>
<td height="5%" class="inhalt"> </td>
<td align="right" valign="middle" class="inhalt"> </td>
<td colspan="4" class="inhalt"> </td>
<td class="inhalt"> </td>
</tr>
<tr>
<td height="3%" colspan="7" class="inhalt">* Diese Felder müssen ausgefüllt sein.</td>
</tr>
<tr>
<td height="42" colspan="7" class="inhalt"> </td>
</tr>
<tr>
<td height="2%" class="inhalt"> </td>
<td height="2%" class="inhalt"> </td>
<td height="2%" class="inhalt"><input type="submit" name="Submit" value="Send" /></td>
<td height="2%" class="inhalt"> </td>
<td height="2%" class="inhalt"><input name="Delete" type="reset" id="Delete" value="Delete" /></td>
<td height="2%" class="inhalt"> </td>
<td height="2%" class="inhalt"> </td>
</tr>
<tr>
<td height="8%" colspan="7" class="inhalt"> </td>
</tr>
</table>
</form>
</div>
Dieser Beitrag wurde am 04.01.2007 um 14:32:33 Uhr von mdean zum 2. Mal editiert.
|
|
|
03.01.2007 17:28 Uhr
|
|
Flitze
|
Administrator
|
|
registriert
|
17.10.2006
|
wohnt in
|
Eschwege
|
Beiträge
|
332
|
|
Hi,
und erstmal willkommen im Forum 
Du hast den Submit Button anders benannt
Code:
<td height="2%" class="inhalt"><input type="submit" name="Submit" value="Send" /></td>
Du hast 2 Möglichkeiten um das zu beheben,
1. du änderst die oben genannte Zeile in folgende:
Code:
<td height="2%" class="inhalt"><input type="submit" name="submit" value="Registrieren" /></td>
2. du änderst die if-Bedingung ganz am Anfang in
Code:
if(isset($_POST['Submit']) AND $_POST['Submit']=='Send'){
// Edit
Es sollte übrigens auch
Code:
action="<?php echo $_SERVER['PHP_SELF'] ?>
heißen
Dieser Beitrag wurde am 03.01.2007 um 18:08:00 Uhr von Flitze zum 1. Mal editiert.
|
|
|
04.01.2007 10:41 Uhr
|
|
mdean
|
Forenposter
|
|
registriert
|
03.01.2007
|
wohnt in
|
Schweiz
|
Beiträge
|
90
|
|
Autsch.. dummer Fehler von mir . Jedenfalls vielen dank für die Hilfe!
Nochmals ne Frage. Ich hab ja jetzt noch so ne Checkbox, dass man die Nutzungsbedingungen akzeptieren muss. wie lautet eine solche Überprüfung?
Danke
mdean
|
|
|
04.01.2007 13:32 Uhr
|
|
Flitze
|
Administrator
|
|
registriert
|
17.10.2006
|
wohnt in
|
Eschwege
|
Beiträge
|
332
|
|
Checkboxen werden bei Formularen nur dann versandt, wenn sie auch angeklickt wurden. D.h. in deinem Formulare definierst du eine Checkbox:
Code:
<input type="checkbox" name="Nutzungsbedingungen" value="1">
Bei der Fehlerprüfung im PHP Teil schaust du nun mit isset() ob diese Checkbox existiert
PHP:
<?php
...
if(!isset($_POST['Nutzungsbedingungen']) OR $_POST['Nutzungsbedingungen']!= '1')
$errors[]= "Sie müssen die Nutzungsbedingungen akzeptieren.";
...
?>
Und schön auf die Namen achten
Dieser Beitrag wurde am 04.01.2007 um 13:32:56 Uhr von Flitze zum 1. Mal editiert.
|
|
|
04.01.2007 13:50 Uhr
|
|
mdean
|
Forenposter
|
|
registriert
|
03.01.2007
|
wohnt in
|
Schweiz
|
Beiträge
|
90
|
|
Danke!
So nun noch ein Detail, dann ist das Registrierungsformular abgeschlossen (Sry falls ich nerve ).
Ich finde die normalen Buttons nicht so schön, darum ab ich mir gedacht lös ich das mit einem imagefield:
Code:
<input name="Send" type="image" onclick="submit()" src="pics/send.gif"
Jetzt stellt sich aber leider wieder die Frage was ich dann hier angeben muss:
Code:
if(isset($_POST['Submit']) AND $_POST['Submit']=='Send'){
|
|
|
04.01.2007 14:55 Uhr
|
|
Flitze
|
Administrator
|
|
registriert
|
17.10.2006
|
wohnt in
|
Eschwege
|
Beiträge
|
332
|
|
Dazu brauchst du kein javascript, javascript würde ich allgemein nur als Zusatz bei Formularen verwenden, da nicht jeder User Javascript aktiviert hat und das Formular somit nicht nutzen kann.
So aber nun zu deiner Frage ^^
als if bedingung
Code:
if(isset($_POST['Send_x'], $_POST['Send_x']) ){
als button
Code:
<input type="image" name="Send" src="pics/send.gif">
|
|
|
04.01.2007 15:08 Uhr
|
|
mdean
|
Forenposter
|
|
registriert
|
03.01.2007
|
wohnt in
|
Schweiz
|
Beiträge
|
90
|
|
ööööh.... du hast mich glaub ein bisschen falsch verstanden .
Ich hatte ja am anfang die Zeile PHP:
if(isset($_POST['Submit']) AND $_POST['Submit']=='Send'){
ändern müssen, da ich mein Submit button anders benannt hatte. Jetzt hab ich aber anstelle eines Buttons, ein Bild genommen nämlich folgendermassen:Code:
<input name="Send" type="image" onclick="submit()" src="pics/send.gif"
Das heisst jetzt ja das ich die if() bedingung oben wieder anpassen muss, dass es wieder funktioniert. Aber jetzt weiss ich nicht wie...
|
|
|
04.01.2007 15:41 Uhr
|
|
Flitze
|
Administrator
|
|
registriert
|
17.10.2006
|
wohnt in
|
Eschwege
|
Beiträge
|
332
|
|
ähm nein.. ich hab doch geschrieben
Zitat:als if bedingung
PHP:
if(isset($_POST['Send_x'], $_POST['Send_x']) ){
also musst du
PHP:
if(isset($_POST['Submit']) AND $_POST['Submit']=='Send'){
durch
PHP:
if(isset($_POST['Send_x'], $_POST['Send_x']) ){
ersetzen, dann funktioniert es.
Send_x und Send_y werden benutzt, weil du type="image" benutzt, da muss man halt etwas anders an die sache rangehen 
und onclick="submit()" brauchst du nicht
Probiers einfach mal aus, es sollte gehen ^^
|
|
|
04.01.2007 16:42 Uhr
|
|
mdean
|
Forenposter
|
|
registriert
|
03.01.2007
|
wohnt in
|
Schweiz
|
Beiträge
|
90
|
|
ah ok jetzt hab ichs verstanden .. hat auch geklappt!! Jetzt muss ich nur noch das Loginformular zusammenbauen, dann hab ichs endlich geschafft . aber warscheinlich werd ich auch da mühe habem, hoffe hilfst mir weiterhin .
|
|
|
04.01.2007 17:40 Uhr
|
|
Flitze
|
Administrator
|
|
registriert
|
17.10.2006
|
wohnt in
|
Eschwege
|
Beiträge
|
332
|
|
klar doch... dazu bin ich doch da
|
|
|
16.04.2008 19:37 Uhr
|
|
chris88
|
User
|
|
registriert
|
16.04.2008
|
wohnt in
|
|
Beiträge
|
1
|
|
hi,
ich bin auch gerade dabei ein Registrierungsformular für meine Homepage zu schreiben. Meine Frage ist, die diese 2 Zeilen von dem obigen Code bedeuten:
Zitat:<?php echo"<input type=\"radio\" name=\"Show_Email\" value=\"show\"> ja\n";
echo "<input type=\"radio\" name=\"Show_Email\" value=\"hide\" checked> nein\n"; ?>
mfg chris
|
|
|
16.04.2008 20:27 Uhr
|
RE:
|
Flitze
|
Administrator
|
|
registriert
|
17.10.2006
|
wohnt in
|
Eschwege
|
Beiträge
|
332
|
|
Zitat:chris88
hi,
ich bin auch gerade dabei ein Registrierungsformular für meine Homepage zu schreiben. Meine Frage ist, die diese 2 Zeilen von dem obigen Code bedeuten:
Zitat:<?php echo"<input type=\"radio\" name=\"Show_Email\" value=\"show\"> ja\n";
echo "<input type=\"radio\" name=\"Show_Email\" value=\"hide\" checked> nein\n"; ?>
mfg chris
Damit wird abgefragt, ob die Email-Adresse des Users später angezeigt werden soll oder nicht.
|
|
|