Regscript wo is der fehler
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
adresse
akzeptieren
benutzer
code
datei
email
ergebnis
fehlermeldung
feld
http
message
ordner
problem
register
registrieren
registrierung
spieler
url
vergleich
wiederholen
-
ich hab ein problem und zwar funktioniert mein registrierungsscript nicht es zeigt keine fehlermeldungen an
ich bitte um kritik und verbesserungshinweise (es ha auf einem alten server mal funktioniert
hml code:
<div id="start"> <h1>Registrierung</h1> <p>Bitte fülle alle Felder aus um dich zu registrieren!</p> <table> <form action="../register.php" method ="post" > <tr> <td><span >Nickname</span></td> <td> <input name="nickname" size="30" maxlength="20" value="" /> </tr> <tr> <td><span >Passwort</span></td> <td> <input type="password"name="passwort1" size="30" maxlength="20" value="" /> </td> <tr> </tr> <td><span>Passwort Wiederholen</span></td> <td><input type="password" name="passwort2" size="30" maxlength="20" value="" /> </td> </tr> <tr> <td><span >E-Mail-Adresse</span></td> <td> <input name="email" size="30" maxlength="60" value="" /> </td> </tr> <tr> <td><span>E-Mail-Adresse wiederholen</span></td> <td> <input name="email2" size="30" maxlength="60" value="" /> </td> </tr> </table> <input type="submit" value="Registrieren"> </form> </div>
script:
<?php error_reporting(E_ALL); $message =""; // ausgabe nachricht (zb fehlermeldungen noch einbauen) $dbname ="*******"; $dbuser = "gravewebdesign"; $dbhost = "localhost"; $dbpass = "*********"; //variablen if(isset($_POST['submit'])) { $nickname = $_POST['nickname']; $passwort = $_POST['passwort1']; $passwort2 = $_POST['passwort2']; $email = $_POST['email']; $email2 = $_POST['email2']; // Passwort vergleich und Überprüfung leereingabe if ($_POST['Passwort1'] == "" || $_POST['Passwort2'] == "") { echo "Du hast in min. einem Feld kein Passwort eingetragen";}; if ($_POST['Passwort1'] == $_POST['Passwort2']) {$passwort= $_POST['Passwort2'];} else {echo "Die beiden Passwörter sind nicht identisch!";}; // E-Mail vergleich und Überprüfung leereingabe if ($_POST['E-Mail-Adresse1'] == "" || $_POST['E-Mail-Adresse2'] == "") echo "Du hast in min. einem Feld keine E-Mail-Adresse eingetragen<p>"; if ($_POST["E-Mail-Adresse1"] == $_POST['E-Mail-Adresse2']) {$email = $_POST['E-Mail-Adresse2'];} else {$message.= "<p>Die beiden E-Mail-Adressen sind nicht identisch!";}; //Nickname auf Leereingabe überprüft if ($nickname == "" ) {$message.= "Du hast keinen Nickname eingetragen!<p>"; }; // Pw verschlüsseln $hash = crypt($passwort); // doppel registrierung verhindern + variablen noch ändern !!!!!!!!!! if(empty($_POST['checkID'])) { $_POST["checkID"] = md5(microtime() ); } else { if(preg_match('/^[a-f0-9]{32}$/',$_POST['checkID'])); } //Verbindung mit der Datenbank $db = mysql_connect($dbhost,$dbuser,$dbpass); mysql_select_db($dbname); // Nickname und Emaildresse abfragen (ob vorhanden) //Nickname $sql = mysql_query("SELECT spieler.* FROM elitewargame_01.spieler WHERE spieler.spielername =='neun' "); $ergebnis=mysql_num_rows($sql); echo"<p> ne $ergebnis"; if ($sql != "") $message.="<p>Dein Nickname ist schon vorhanden!"; // Emailadresse $sql2 = mysql_query("SELECT spieler.email FROM spieler WHERE email ='".$email."' "); if ($sql2 != "") $message.="<p>Dein E-Mail-Adresse ist schon vorhanden!"; //agb kontrollkästchen if ($_POST[agb] == "") $message.="<p>Du musst die AGB akzeptieren!"; // db eintragungen if ($message ==""){ mysql_query("INSERT INTO spieler (spielername, passwort, email) VALUES (' ".$nickname."' , '".$hash."','". $email."' )"); echo"<p> Der Benutzer wurde angelegt!";} else echo"<p>Der Benutzer wurde nicht angelegt<p> $message"; } ?>
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
<input type="password"name="passwort1" size="30" maxlength="20" value="" />
</td>
<tr>
</tr>
<td><span>Passwort Wiederholen</span></td>
<td><input type="password" name="passwort2" size="30" maxlength="20" value="" />
// Passwort vergleich und Überprüfung leereingabe
if ($_POST['Passwort1'] == "" || $_POST['Passwort2'] == "")
{ echo "Du hast in min. einem Feld kein Passwort eingetragen";};
if ($_POST['Passwort1'] == $_POST['Passwort2'])
{$passwort= $_POST['Passwort2'];}
else {echo "Die beiden Passwörter sind nicht identisch!";};
klassiker, sowas sehe ich doch sofort
gravedesign schrieb: ich hab ein problem und zwar funktioniert mein registrierungsscript nicht es zeigt keine fehlermeldungen an
'funktioniert nicht' ist immer etwas ungenau.
irgendwas passiert immer ...
Ansonsten hilft es ein paar echo's reinzuhauen um rauszufinden bis wo der code kommt.
Edit:
Was mir noch auffält:
//agb kontrollkästchen if ($_POST[agb] == "") $message.="<p>Du musst die AGB akzeptieren!";
Ich nehme an da soll noch eine checkbox für die agb hin.
Bei checkboxen die nicht aktiviert werden wird, garnix gesendet.
Also am besten mit if(!isset()) überprüfen.
und Gänsefüßchen ('') nicht vergessen.
Eigentlich müsste das eine php-Fehlermeldung rauswerfen...
Beitrag zuletzt geändert: 3.10.2010 23:12:02 von simuliertes -
das mit den echos hatte ich probiert und er gibt keinerleri fehlermeldungen von sich noch trägt das script die daten in die datenbank und gibt auch keiner erfolgsmeldung ab
<input type="password"name="passwort1" size="30" maxlength="20" value="" />
</td>
<tr>
</tr>
<td><span>Passwort Wiederholen</span></td>
<td><input type="password" name="passwort2" size="30" maxlength="20" value="" />
// Passwort vergleich und Überprüfung leereingabe
if ($_POST['Passwort1'] == "" || $_POST['Passwort2'] == "")
{ echo "Du hast in min. einem Feld kein Passwort eingetragen";};
if ($_POST['Passwort1'] == $_POST['Passwort2'])
{$passwort= $_POST['Passwort2'];}
else {echo "Die beiden Passwörter sind nicht identisch!";};
klassiker, sowas sehe ich doch sofort
wurde behoben keine veränderung
Beitrag zuletzt geändert: 3.10.2010 23:10:08 von gravedesign -
wie wäre es dann damit?
<input type="submit" value="Registrieren">
if(isset($_POST['submit']))
Du musst dem input noch ein
name="submit"
spendieren -
Was mir noch auffält:
//agb kontrollkästchen
if ($_POST[agb] == "")
$message.="<p>Du musst die AGB akzeptieren!";
hab ich erstmal entfernt wird später eingefügt
wie wäre es dann damit?
<input type="submit" value="Registrieren">
if(isset($_POST['submit']))
Du musst dem input noch ein
name="submit"
spendieren
auch gemacht keine änderung wenn ich auf registrieren klicke komm ich auf einer 404 page raus .... -
gravedesign schrieb:
auch gemacht keine änderung wenn ich auf registrieren klicke komm ich auf einer 404 page raus ....
Ist das jetzt neu oder dir gerade erst zufällig eingefallen?
Also nochmal:
1) Beschreibe genau was passiert (wirst du auf die seite weitergeleitet? kommt irgendeine meldung? Hast du den link? usw)
2)prüfe mit echo welche post-daten gesendet werden (foreach($_POST as $name => $wert){echo $name." ".$wert})
und bis wo dein code kommt (welche if's werden erreicht, wird die db erreicht, steht was in $message? usw)
-
es passiert eigentlich garnix ich klicke auf registrieren und werde schon immer die ganze zeit auf die 404 fehlerseite weitergeleitet und oben in der url adresse im browser steht dann die scipt datei drin und halt das auf der seite nichts ist
echo befehle hab ich schon probiert gehabt ... kam nix außer fatal error ...... in $message müsste was drin sein weil ich bisher nicht alle felder ausgefüllt hatte wenns nach mir geht sollten die fehler wenn man zb nix ausfüllt noch auf der selben seite angezeigt werden
Beitrag zuletzt geändert: 3.10.2010 23:37:17 von gravedesign -
gravedesign schrieb:
es passiert eigentlich garnix ich klicke auf registrieren und werde schon immer die ganze zeit auf die 404 fehlerseite weitergeleitet
-link bitte
-sind das 2 dateien oder nur eine und wenn zwei in welchen ordnern liegen die
-ist dir klar was ../ in der url-adresse bedeutet?
gravedesign schrieb: und oben in der url adresse im browser steht dann die scipt datei drin und halt das auf der seite nichts ist
-Was für text steht da, kopieren,hier posten!
gravedesign schrieb:
echo befehle hab ich schon probiert gehabt ... kam nix außer fatal error .....
-Was für fatal error, kopieren, hier posten!
-link zu dem login bitte (oder spricht da was dagegen?)
-zeig nochmal wie der code jetzt aussieht -
also momentan liegt das ganze noch bei meinem alten hoster ich warte hier nur noch das der ftp zugang wieder funktioniert dan zieh ich hier her um ist sowieso alles besser hier
http://gravewebdesign.gr.ohost.de/elitewarv2/index.php?seite=registrierung <- der link
<div id="start"> <h1>Registrierung</h1> <p>Bitte fülle alle Felder aus um dich zu registrieren!</p> <table> <form action="../register.php" method ="post" > <tr> <td><span >Nickname</span></td> <td> <input name="nickname" size="30" maxlength="20" value="" /> </tr> <tr> <td><span >Passwort</span></td> <td> <input type="password"name="passwort1" size="30" maxlength="20" value="" /> </td> <tr> </tr> <td><span>Passwort Wiederholen</span></td> <td><input type="password" name="passwort2" size="30" maxlength="20" value="" /> </td> </tr> <tr> <td><span >E-Mail-Adresse</span></td> <td> <input name="email" size="30" maxlength="60" value="" /> </td> </tr> <tr> <td><span>E-Mail-Adresse wiederholen</span></td> <td> <input name="email2" size="30" maxlength="60" value="" /> </td> </tr> </table> <input type="submit" value="Registrieren" name="submit"> </form> </div>
<?php error_reporting(E_ALL); $message =""; // ausgabe nachricht (zb fehlermeldungen noch einbauen) $dbname ="Spieler"; $dbuser = "**********"; $dbhost = "localhost"; $dbpass = "*****"; //variablen if(isset($_POST['submit'])) { $nickname = $_POST['nickname']; $passwort = $_POST['passwort1']; $passwort2 = $_POST['passwort2']; $email = $_POST['email']; $email2 = $_POST['email2']; // Passwort vergleich und Überprüfung leereingabe if ($_POST['passwort1'] == "" || $_POST['passwort2'] == "") { echo "Du hast in min. einem Feld kein Passwort eingetragen";}; //<--- hier schon mit echo getestet 0 reaktion if ($_POST['passwort1'] == $_POST['passwort2']) {$passwort= $_POST['passwort2'];} else {echo "Die beiden Passwörter sind nicht identisch!";}; // E-Mail vergleich und Überprüfung leereingabe if ($_POST['E-Mail-Adresse1'] == "" || $_POST['E-Mail-Adresse2'] == "") echo "Du hast in min. einem Feld keine E-Mail-Adresse eingetragen<p>"; if ($_POST["E-Mail-Adresse1"] == $_POST['E-Mail-Adresse2']) {$email = $_POST['E-Mail-Adresse2'];} else {$message.= "<p>Die beiden E-Mail-Adressen sind nicht identisch!";}; //Nickname auf Leereingabe überprüft if ($nickname == "" ) {$message.= "Du hast keinen Nickname eingetragen!<p>"; }; // Pw verschlüsseln $hash = crypt($passwort); // doppel registrierung verhindern + variablen noch ändern !!!!!!!!!! if(empty($_POST['checkID'])) { $_POST["checkID"] = md5(microtime() ); } else { if(preg_match('/^[a-f0-9]{32}$/',$_POST['checkID'])); } //Verbindung mit der Datenbank $db = mysql_connect($dbhost,$dbuser,$dbpass); mysql_select_db($dbname); // Nickname und Emaildresse abfragen (ob vorhanden) //Nickname $sql = mysql_query("SELECT spieler.* FROM elitewargame_01.spieler WHERE spieler.spielername =='neun' "); $ergebnis=mysql_num_rows($sql); echo"<p> ne $ergebnis"; if ($sql != "") $message.="<p>Dein Nickname ist schon vorhanden!"; // Emailadresse $sql2 = mysql_query("SELECT spieler.email FROM spieler WHERE email ='".$email."' "); if ($sql2 != "") $message.="<p>Dein E-Mail-Adresse ist schon vorhanden!"; //agb kontrollkästchen //if ($_POST[agb] == "") // $message.="<p>Du musst die AGB akzeptieren!"; // db eintragungen if ($message ==""){ mysql_query("INSERT INTO spieler (spielername, passwort, email) VALUES (' ".$nickname."' , '".$hash."','". $email."' )"); echo"<p> Der Benutzer wurde angelegt!";} else echo"<p>Der Benutzer wurde nicht angelegt<p> $message"; } ?>
die registrierungs.php was den html code beinhalten ist im ordner startseite der im ordner content ist und im content liegt die register .php die das script beinhaltet url(../ verlinktung hab ich mit dreamweaver gemacht muss also passen)
Beitrag zuletzt geändert: 4.10.2010 1:02:34 von gravedesign -
simuliertes schrieb:
-sind das 2 dateien oder nur eine und wenn zwei in welchen ordnern liegen die
-ist dir klar was ../ in der url-adresse bedeutet?
Ich denke mal dann ist das problem ziemlich offensichtlich das Du bei
<form action="../register.php" method ="post" >
..auf die falsche adresse verweist.
die jetzige adresse zeigt nicht auf Deine register.php-datei also kann da auch nix passieren.
Finde raus wo Deine register.php liegt und korrigiere die Adresse , dann sollte das Problem gelöst sein.
Jedenfalls dieses
edit:
http://de.selfhtml.org/html/allgemein/referenzieren.htm
edito2:
die registrierungs.php was den html code beinhalten ist im ordner startseite der im ordner content ist und im content liegt die register .php die das script beinhaltet url(../ verlinktung hab ich mit dreamweaver gemacht muss also passen)
Mmmhhh ok anscheinend arbeitest du mit einem content-management-system (joomla, phpBB, typo oder so?).
Deswegen kann der link nicht passen.
Eine Möglichkeit:
Du könntest die register.php und registrierungs.php einfach zusammenschmeissen.
In etwa so:
Code in registrierung.php:
<?php error_reporting(E_ALL); $message =""; // ausgabe nachricht (zb fehlermeldungen noch einbauen) $dbname ="Spieler"; $dbuser = "gravewebdesign"; $dbhost = "localhost"; $dbpass = "chc1958120"; //variablen if(isset($_POST['submit'])) { $nickname = $_POST['nickname']; $passwort = $_POST['passwort1']; $passwort2 = $_POST['passwort2']; $email = $_POST['email']; $email2 = $_POST['email2']; // Passwort vergleich und Überprüfung leereingabe if ($_POST['passwort1'] == "" || $_POST['passwort2'] == "") { echo "Du hast in min. einem Feld kein Passwort eingetragen";}; //<--- hier schon mit echo getestet 0 reaktion if ($_POST['passwort1'] == $_POST['passwort2']) {$passwort= $_POST['passwort2'];} else {echo "Die beiden Passwörter sind nicht identisch!";}; // E-Mail vergleich und Überprüfung leereingabe if ($_POST['E-Mail-Adresse1'] == "" || $_POST['E-Mail-Adresse2'] == "") echo "Du hast in min. einem Feld keine E-Mail-Adresse eingetragen<p>"; if ($_POST["E-Mail-Adresse1"] == $_POST['E-Mail-Adresse2']) {$email = $_POST['E-Mail-Adresse2'];} else {$message.= "<p>Die beiden E-Mail-Adressen sind nicht identisch!";}; //Nickname auf Leereingabe überprüft if ($nickname == "" ) {$message.= "Du hast keinen Nickname eingetragen!<p>"; }; // Pw verschlüsseln $hash = crypt($passwort); // doppel registrierung verhindern + variablen noch ändern !!!!!!!!!! if(empty($_POST['checkID'])) { $_POST["checkID"] = md5(microtime() ); } else { if(preg_match('/^[a-f0-9]{32}$/',$_POST['checkID'])); } //Verbindung mit der Datenbank $db = mysql_connect($dbhost,$dbuser,$dbpass); mysql_select_db($dbname); // Nickname und Emaildresse abfragen (ob vorhanden) //Nickname $sql = mysql_query("SELECT spieler.* FROM elitewargame_01.spieler WHERE spieler.spielername =='neun' "); $ergebnis=mysql_num_rows($sql); echo"<p> ne $ergebnis"; if ($sql != "") $message.="<p>Dein Nickname ist schon vorhanden!"; // Emailadresse $sql2 = mysql_query("SELECT spieler.email FROM spieler WHERE email ='".$email."' "); if ($sql2 != "") $message.="<p>Dein E-Mail-Adresse ist schon vorhanden!"; //agb kontrollkästchen //if ($_POST[agb] == "") // $message.="<p>Du musst die AGB akzeptieren!"; // db eintragungen if ($message ==""){ mysql_query("INSERT INTO spieler (spielername, passwort, email) VALUES (' ".$nickname."' , '".$hash."','". $email."' )"); echo"<p> Der Benutzer wurde angelegt!";} else echo"<p>Der Benutzer wurde nicht angelegt<p> $message"; }else{ ?> <div id="start"> <h1>Registrierung</h1> <p>Bitte fülle alle Felder aus um dich zu registrieren!</p> <table> <form action="" method ="post" > <tr> <td><span >Nickname</span></td> <td> <input name="nickname" size="30" maxlength="20" value="" /> </tr> <tr> <td><span >Passwort</span></td> <td> <input type="password"name="passwort1" size="30" maxlength="20" value="" /> </td> <tr> </tr> <td><span>Passwort Wiederholen</span></td> <td><input type="password" name="passwort2" size="30" maxlength="20" value="" /> </td> </tr> <tr> <td><span >E-Mail-Adresse</span></td> <td> <input name="email" size="30" maxlength="60" value="" /> </td> </tr> <tr> <td><span>E-Mail-Adresse wiederholen</span></td> <td> <input name="email2" size="30" maxlength="60" value="" /> </td> </tr> </table> <input type="submit" value="Registrieren" name="submit"> </form> </div> <?php } ?>
Mach die vorher eine sicherheitskopie (!)
edit3:
ok hat sich ja erledigt
Beitrag zuletzt geändert: 4.10.2010 0:22:07 von simuliertes -
ok scheinbar hat dreamweaver es doch nich ordentlich angegeben den pfad hab jetzt jedenfalls die datei erwischt und prompt
Du hast in min. einem Feld kein Passwort eingetragenDie beiden Passwörter sind nicht identisch!Du hast in min. einem Feld keine E-Mail-Adresse eingetragen
Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in /usr/export/www/hosting/gravewebdesign/elitewarv2/content/register.php on line 69
ne
Der Benutzer wurde nicht angelegt
Du hast keinen Nickname eingetragen!
undefined index email .... woran liegt das? und wie bekomm ich das hin das in dem container die fehlermeldungen angezeigt werden? <-erledigt
Beitrag zuletzt geändert: 4.10.2010 0:16:51 von gravedesign -
Auf Deine Art kannst Du auch nicht abfragen ob sql diesen benutzer gefunden hat.
http://www.schattenbaum.net/php/daten_formatiert_ausgeben.php
http://de.php.net/manual/de/function.mysql-fetch-object.php
http://de.php.net/manual/de/function.mysql-num-rows.php
Wegen den anderen Fehlern guck mal in ruhe ob du die POST-NAMEN richtig geschrieben hast.
$_POST['XXX']
muss immer
name="XXX"
sein.
jedenfalls ist dein ursprüngliches problem behoben alles andere ist nur noch fleissarbeit.
Viel erfolg
noch ein kleiner hinweis.
Dreamweaver war nicht 'schuld'. Du kommst nicht drumherum zu lernen , wie man verweise schreibt bzw sie auch kurz zu kontrollieren...
Beitrag zuletzt geändert: 4.10.2010 0:45:45 von simuliertes -
danke registrieren funzt zumindest kommt erfolgsmeldung
verstanden hab ich nur noch nich das mit dem mysql_fetch_object das soll ja mein problem zwecks der fehlermeldung auf der selben seite lösen oder? weil zur zeit kommen die fehlermeldungen auf einer seperaten seite bzw die erfolgsmeldungen^^
erstmal für deine bisherige hilfe vielen vielen dank^^ von dir kann man noch einiges lernen und freundlich erklärt hast du auch alles einfach super
nun bin ich endlic bei lima city umgezogen und hab nun aber wieder ein problem
Beitrag zuletzt geändert: 5.10.2010 17:40:07 von gravedesign -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage