Probleme mit if

  • Themenstarter Themenstarter ByeBye 152404
  • Beginndatum Beginndatum
B

ByeBye 152404

Probleme mit if [Registrierungsscript]

Hallo,
ich habe ein Problem, ich bin dabei ein registrierungsscript zu schreiben mit fehlerabfrage.
Leider gibt er mir immer das Fehlerformular aus (also wen nicht alles angegeben wurde) und dieses dann auch noch ohne die Fehlerausgabe (z.B. geben sie ein Passwort an)

register.php
PHP:
<h4>Registrierung</h4>

<form action="register_send.php" method="post" name="register">

<table>
<tr>
	<td>
	Nickname:
	</td>

	<td>
	<input type="text" size="20" name="nickname">

	</td>
</tr>

<tr>
	<td>

	E-Mail:
	</td>
	
	<td>
	<input type="text" size="20" name="email">
	</td>
</tr>

<tr>
	<td>
	Vorname:
	</td>

	<td>
	<input type="text" size="20" name="vorname">
	</td>

</tr>

<tr>
	<td>
	Nachname:
	</td>

	<td>
	<input type="text" size="20" name="nachname">
	</td>
</tr>

<tr>
	<td>
	Passwort:
	</td>

	<td>
	<input type="password" size="20" name="pw1" maxlenght="12">
	</td>
</tr>

<tr>

	<td>
	Password wiederholen:
	</td>

	<td>
	<input type="password" size="20" name="pw2" maxlenght="12">
	</td>
</tr>

<tr>
	<td>
	Geburtstag:
	</td>

	<td>
	<input type="text" size="2" name="gb_d" maxlength="2">
	.
	<input type="text" size="2" name="gb_m" maxlength="2">
	.
	<input type="text" size="2" name="gb_y" maxlength="4">
	(dd.mm.yyyy)
	</td>
</tr>

<tr>

	<td>
	Stadt:
	</td>

	<td>
	<input type="text" size="20" name="stadt">
	</td>
</tr>

<tr>

	<td>

	<input type="submit" value="Registrieren">
	<input type="reset" value="Zur&uuml;cksetzen">
	</td>

</tr>
</table>
</form>

<br><br>

register_send.php
PHP:
<?php
include("inc/config.inc.php");  //Include der Config Datei

$rang = 5;

if(isset($_POST['register']))  //Ueberpruefen des Fomulars
  { 
  $allesok = 1; 
  

  if(empty($_POST['nickname'])){
  $allesok = 0; 
  $error[nickname] = "Bitte geben sie einen Nickname ein.";} 
  
  if(empty($_POST['email'])){
  $allesok = 0; 
  $error[email] = "Bitte geben sie eine E-Mail ein.";} 

  if(empty($_POST['vorname'])){
  $allesok = 0; 
  $error[vorname] = "Bitte geben sie ihren Vornamen ein.";} 

  if(empty($_POST['nachname'])){
  $allesok = 0; 
  $error[nachname] = "Bitte geben sie ihren Nachnamen ein.";}

  if(empty($_POST['pw1']) or empty($_POST['pw2'])){
  $allesok = 0;
  $error[nopw] = "Sie haben kein Passwort angegeben.";
 
  } else {

    $pw1 = $_POST['pw1'];
    $pw2 = $_POST['pw2'];

    if($pw1 != $pw2){
    $allesok = 0; 
    $error[password] = "Die von ihnen angegeben Passwörter stimmen nicht überein.";}
  }

  if(empty($_POST['geb_d'])){
  $allesok = 0; 
  $error[geb] = "Bitte geben sie ihr Geburtsdatum ein.";} 

  if(empty($_POST['geb_m'])){
  $allesok = 0; 
  $error[geb] = "Bitte geben sie ihr Geburtsdatum ein.";} 

  if(empty($_POST['geb_y'])){
  $allesok = 0; 
  $error[geb] = "Bitte geben sie ihr Geburtsdatum ein.";} 

  if(empty($_POST['stadt'])){
  $allesok = 0; 
  $error[stadt] = "Bitte bestimmen sie ihre Herkunft ein.";} 

   }
  
  if($allesok){ 

  //Schreiben in die mySQL Datenbank.
       $link = mysql_connect($db_server, $db_account, $db_password)
            or die(mysql_error());
        mysql_select_db($db_database, $link)
            or die(mysql_error());
        $query = '
            INSERT INTO
                    `users`
              SET
                    `Datum`    = NOW(),
                    `Nickname` = "'.mysql_real_escape_string($_POST['name']).'",
                    `Email`    = "'.mysql_real_escape_string($_POST['email']).'",
                    `Vorname`  = "'.mysql_real_escape_string($_POST['vorname']).'",
                    `Nachname` = "'.mysql_real_escape_string($_POST['nachname']).'",
                    `Geb_dd`   = "'.mysql_real_escape_string($_POST['geb_d']).'",
                    `Geb_mm`   = "'.mysql_real_escape_string($_POST['geb_m']).'",
                    `Geb_yy`   = "'.mysql_real_escape_string($_POST['geb_y']).'",
                    `PW`       = "'.mysql_real_escape_string(MD5($_POST['pw1'])).'",
                    `Sex`      = "'.mysql_real_escape_string($_POST['sex']).'",
                    `Rang`     = "'.mysql_real_escape_string($rang).'",

            ';
        mysql_query($query, $link)
            or die(mysql_error());
}
  
  else
  {
  ?>
<h4>Registrierung</h4>

Folgende Fehler sind aufgetreten:<br>
<?php $error['name']; ?><br>
<?php $error['email']; ?><br>
<?php $error['vorname']; ?><br>
<?php $error['nachname']; ?><br>
<?php $error['password']; ?><br>
<?php $error['geb']; ?><br>
<?php $error['stadt']; ?><br>

<form action="<?php echo $_SERVER['PHP_SELF']?>" method="post" name="register">

<table>
<tr>
	<td>
	Nickname:
	</td>

	<td>
	<input type="text" size="20" name="nickname">

	</td>
</tr>

<tr>
	<td>
	Vorname:
	</td>

	<td>
	<input type="text" size="20" name="vorname">
	</td>

</tr>

<tr>
	<td>
	Nachname:
	</td>

	<td>
	<input type="text" size="20" name="nachname">
	</td>
</tr>

<tr>
	<td>
	Passwort:
	</td>

	<td>
	<input type="password" size="20" name="pw1" maxlenght="12">
	</td>
</tr>

<tr>

	<td>
	Password wiederholen:
	</td>

	<td>
	<input type="password" size="20" name="pw2" maxlenght="12">
	</td>
</tr>


<tr>
	<td>

	E-Mail:
	</td>
	
	<td>
	<input type="text" size="20" name="email">
	</td>
</tr>

<tr>
	<td>
	Geschlecht:
	</td>

	<td>
	<input type="radio" name="sex" value="male"> m&auml;nnlich
	
	<input type="radio" name="sex" value="female"> weiblich
	</td>
</tr>

<tr>
	<td>
	Geburtstag:
	</td>

	<td>
	<input type="text" size="2" name="gb_d" maxlength="2">
	.
	<input type="text" size="2" name="gb_m" maxlength="2">
	.
	<input type="text" size="2" name="gb_y" maxlength="4">
	(dd.mm.yyyy)
	</td>
</tr>

<tr>

	<td>
	Stadt:
	</td>

	<td>
	<input type="text" size="20" name="stadt">
	</td>
</tr>

<tr>

	<td>

	<input type="submit" value="Registrieren">
	<input type="reset" value="Zur&uuml;cksetzen">
	</td>

</tr>
</table>
</form>

<br><br>
<?php
  }
  ?>

SO hab gerade selber och en fehler gefunden, geht aber nochimmer nicht
 
Zuletzt bearbeitet von einem Moderator:
Bei der Errorausgabe muss noch immer ein echo dazu.

Und hier
PHP:
if(isset($_POST['register'])){

prüfst du nach dem Formularnamen. Der wird aber nicht übergeben. Du müsstest dann entweder die Felder abfragen, oder ob der Submitbutton gedrückt wurde.
 
naja ich weiss is ne blöde frage aber wie frage ich de button ab? habe das schon mit name probiert ändert sich aber nichts
 
Wie willst du es mit dem Namen probiert haben, wenn gar keiner angegeben ist? ;)
HTML:
<!-- Code vor Submitbutton -->

<input type="submit" value="Registrieren" name="submit">

<!-- Code nach Submitbutton -->

PHP:
if(isset($_POST['submit']))
{
#...

Es würde auch
PHP:
if($_SERVER['REQUEST_METHOD'] == "POST")
{
#...
gehen. Ist aber nicht zu empfehlen, wenn du mehrere Formulare auf der Seite hast, die auf die gleiche Datei verweisen, oder du mehrere Submitbuttons hast, bei denen unterschiedlich reagiert werden soll.


Und halte dich bitte mehr an die Rechtschreibung.
 
Zuletzt bearbeitet:
OKAY nun hab ich mich bis zum SQL fehler vorgearbeitet

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 14

Okay geht alles danke
 
Zuletzt bearbeitet von einem Moderator:
Springt das Script überhaupt in den if-Zweig rein, oder nicht? Lasse dir mal die POST Variable ausgeben
PHP:
print_r($_POST);
 
Zurück