Webdesign in Siegen

Register - Parse Error

Fragen zum Thema PHP können hier gestellt werden

Moderator: Basti

Register - Parse Error

Beitragvon =Max= am 27.12.2007, 16:06

Halöle,

habe auf die Schnelle eine Registrierungsdatei für ein Login Script gemacht. Da ich gerade immernoch PHP-Anfänger bin blicke ich jetzt gerade net so durch wo mein Fehler ist ;)

Folgenden Code habe ich:
Code: Alles auswählen
<?php
include_once('sessionhelpers.inc.php');

if ($_POST['UserName']=="" AND $_POST['UserMail']=="" AND $_POST['UserPass']=="") {
   echo 'Du kannst dich nun hier Registrieren, um Zugang zum geschützen Bereich zu erhalten';
   echo '<b>Fülle bitte alle Felder aus</b>';
   echo '<form name="registration" action="register.php" method="post">
   echo 'Username:<br><input type="text" name="UserName" size="20" maxlength="25"><br><br>';
   echo 'Passwort:<br><input type="password" name="UserPass" size="20" maxlength="50"><br><br>';
   echo 'E-Mail:<br><input type="text" name="UserMail" size="20" maxlength="100"><br><br>';
   echo '<input type="submit" value="Absenden" name="submit"><input type="reset" value="Zurücksetzen" name="reset">';
   echo '</form>';
} else {
   if ($_POST['UserName']=="" OR $_POST['UserMail']=="" OR $_POST['UserPass']=="") {
      echo 'Du hast nicht alle Felder ausgefüllt. Bitte fülle alle Felder aus!';
      echo '<a href="register.php">Zurück zur Registration</a>';
   } else {
      $password = md5($_POST['UserPass']);
      $username = $_POST['UserName'];
      $mail = $_POST['UserMail'];
      $sql = "INSERT INTO users(UserName, UserMail, UserPass)
                VALUES('$username', '$mail', '$password')";

      $result = mysql_query($sql);
      }
      if (!$result) {
      echo "Anfrage ($sql) konnte nicht ausgeführt werden : " . mysql_error();
      exit;
      }

      if ($result) {
      echo "Du hast dich erfolgreich registriert. Du kannst dich nun mit deinen Logindaten einloggen!";
      }
      }
   }
}
?>


Und folgende Fehlermeldung tritt auf:

Parse error: syntax error, unexpected T_STRING, expecting ',' or ';' in /usr/export/www/vhosts/funnetwork/hosting/icqnummerndesign/osr/register.php on line 8


In Zeile 8 stimmt das für mich eigentlich ;)

Lg,

Max
=Max=
Mitglied
 
Beiträge: 444
Registriert: 14.01.2007, 18:59

Re: Register - Parse Error

Beitragvon Avedo am 27.12.2007, 16:14

Morgen!
Das
Code: Alles auswählen
echo '<form name="registration" action="register.php" method="post">

muss so aussehen
Code: Alles auswählen
echo '<form name="registration" action="register.php" method="post">';

Zudem würde ich das ändern:
Code: Alles auswählen
if ($_POST['UserName']=="" AND $_POST['UserMail']=="" AND $_POST['UserPass']=="")

zu
Code: Alles auswählen
if (!$_POST['UserName'] AND !$_POST['UserMail'] AND !$_POST['UserPass'])

Sollte so auch funktionieren. Vorher solltest du aber die Variabeln mit trim() bearbeiten, sodass lehrzeichen am Anfang und am Ende gelöscht werden. Sonst kann sich jemand mit " " registrieren. Das ! besagt das die Variable gesetzt sein muss bzw. etwas enthalten muss, wenn ich mich nicht grad vollkommen täusche. Die Nacht war etwas lang. Sry.
Operator Symbol Beispiel Funktionsweise
Nicht ! !$a true, wenn der Wert false ist (Negation)

MfG, Andy
Ich bin zu Mimis Religion konvertiert!
I'm so tired of slitting the throats of people calling me a violent psychopath.
Benutzeravatar
Avedo
Mitglied
 
Beiträge: 613
Registriert: 09.12.2007, 20:12
Wohnort: Göttingen

Re: Register - Parse Error

Beitragvon =Max= am 27.12.2007, 17:14

Jetzt tritt dieser Fehler auf:
Parse error: syntax error, unexpected '}' in /usr/export/www/vhosts/funnetwork/hosting/icqnummerndesign/osr/register.php on line 35

Neuer Code:

Code: Alles auswählen
<?php
include_once('sessionhelpers.inc.php');

if (!$_POST['UserName'] AND !$_POST['UserMail'] AND !$_POST['UserPass']) {
   echo 'Du kannst dich nun hier Registrieren, um Zugang zum geschützen Bereich zu erhalten';
   echo '<b>Fülle bitte alle Felder aus</b>';
   echo '<form name="registration" action="register.php" method="post">';
   echo 'Username:<br><input type="text" name="UserName" size="20" maxlength="25"><br><br>';
   echo 'Passwort:<br><input type="password" name="UserPass" size="20" maxlength="50"><br><br>';
   echo 'E-Mail:<br><input type="text" name="UserMail" size="20" maxlength="100"><br><br>';
   echo '<input type="submit" value="Absenden" name="submit"><input type="reset" value="Zurücksetzen" name="reset">';
   echo '</form>';
} else {
   if (!$_POST['UserName'] OR !$_POST['UserMail'] OR !$_POST['UserPass']) {
      echo 'Du hast nicht alle Felder ausgefüllt. Bitte fülle alle Felder aus!';
      echo '<a href="register.php">Zurück zur Registration</a>';
   } else {
      $password = md5($_POST['UserPass']);
      $username = $_POST['UserName'];
      $mail = $_POST['UserMail'];
      $sql = "INSERT INTO users(UserName, UserMail, UserPass)
                VALUES('$username', '$mail', '$password')";

      $result = mysql_query($sql);
      }
      if (!$result) {
      echo "Anfrage ($sql) konnte nicht ausgeführt werden : " . mysql_error();
      exit;
      }

      if ($result) {
      echo "Du hast dich erfolgreich registriert. Du kannst dich nun mit deinen Logindaten einloggen!";
      }
      }
   }
}
?>


EDIT:

So habe gemerkt das ich ein paar } zu viel hatte.

Nun dieser Code:

Code: Alles auswählen
<?php
error_reporting(E_ALL);
include_once('sessionhelpers.inc.php');

if (!$_POST['UserName'] AND !$_POST['UserMail'] AND !$_POST['UserPass']) {
   echo 'Du kannst dich nun hier Registrieren, um Zugang zum geschützen Bereich zu erhalten';
   echo '<b>Fülle bitte alle Felder aus</b>';
   echo '<form name="registration" action="register.php" method="post">';
   echo 'Username:<br><input type="text" name="UserName" size="20" maxlength="25"><br><br>';
   echo 'Passwort:<br><input type="password" name="UserPass" size="20" maxlength="50"><br><br>';
   echo 'E-Mail:<br><input type="text" name="UserMail" size="20" maxlength="100"><br><br>';
   echo '<input type="submit" value="Absenden" name="submit"><input type="reset" value="Zurücksetzen" name="reset">';
   echo '</form>';
} else {
   if (!$_POST['UserName'] OR !$_POST['UserMail'] OR !$_POST['UserPass']) {
      echo 'Du hast nicht alle Felder ausgefüllt. Bitte fülle alle Felder aus!';
      echo '<a href="register.php">Zurück zur Registration</a>';
   } else {
      $password = md5($_POST['UserPass']);
      $username = $_POST['UserName'];
      $mail = $_POST['UserMail'];
      $sql = "INSERT INTO users(UserName, UserMail, UserPass)
                VALUES('$username', '$mail', '$password')";

      $result = mysql_query($sql);
      
      if (!$result) {
      echo "Anfrage ($sql) konnte nicht ausgeführt werden : " . mysql_error();
      exit;
      }

      if ($result) {
      echo "Du hast dich erfolgreich registriert. Du kannst dich nun mit deinen Logindaten einloggen!";
      }
      }
   }

?>


Und dieser Fehler:


Notice: Undefined index: UserName in /usr/export/www/vhosts/funnetwork/hosting/icqnummerndesign/osr/register.php on line 5

Notice: Undefined index: UserMail in /usr/export/www/vhosts/funnetwork/hosting/icqnummerndesign/osr/register.php on line 5

Notice: Undefined index: UserPass in /usr/export/www/vhosts/funnetwork/hosting/icqnummerndesign/osr/register.php on line 5


Drunter erscheint das Formular. Registrieren funktioniert aber dennoch
=Max=
Mitglied
 
Beiträge: 444
Registriert: 14.01.2007, 18:59

Re: Register - Parse Error

Beitragvon Labrar am 27.12.2007, 19:00

Na klar funktioniert es. Da dann ja $_POST['UserName'] usw. definiert wurde. Bis zu diesem Zeitpunkt aber gibt es die Variable $_POST['UserName'] nicht. Ausserdem würde ich isset oder !empty verwenden.
Ich möchte wie mein Opa im Schlaf sterben und nicht heulend und schreiend wie sein Beifahrer.

Mentalisten sprechen Rabisch und sprengen den Geist
Fundamentalisten sprechen Arabisch und sprengen sich selbst

Von O. Kalkofe über die Urin Kellner Show
Labrar
Mitglied
 
Beiträge: 443
Registriert: 11.04.2007, 21:52
Wohnort: Ludwigsburg

Re: Register - Parse Error

Beitragvon Avedo am 27.12.2007, 19:22

Also wenn überhaupt empty(), da er ja davon ausgeht das man noch nicht angemeldet ist. Zudem funktioniert empty() nur dann wenn eine Variable gesetzt ist.
MfG, Andy
Ich bin zu Mimis Religion konvertiert!
I'm so tired of slitting the throats of people calling me a violent psychopath.
Benutzeravatar
Avedo
Mitglied
 
Beiträge: 613
Registriert: 09.12.2007, 20:12
Wohnort: Göttingen

Re: Register - Parse Error

Beitragvon Ingo am 27.12.2007, 21:09

Hi.
Ich hab's mal gerade ausprobiert. Die zuletzt erwähnte Fehlermeldung verschwindet, sobald man
statt des bool-Operators "!" empty oder isset verwendet. empty funktioniert wie der bool-Operator,
wirft aber keine E_NOTICE aus (wie die von oben), falls die überprüfte Variable nicht gesetzt ist.
(Siehe auch http://de.php.net/empty.)

Zum Unterschied zwischen isset, empty etc. habe ich noch diese Tabelle (Q-1) aufgetan.
Die beste Browserweiche ... sitzt zwischen den Ohren ;o]
Benutzeravatar
Ingo
Moderator
 
Beiträge: 724
Registriert: 01.04.2007, 23:21
Wohnort: Neuss/NRW

Re: Register - Parse Error

Beitragvon =Max= am 28.12.2007, 11:27

Danke hatte das auch shcon mit empty versucht zu lösen ;) aber auf eine ganz andere Weiße habe das jetzt so ausprobiert und es geht:

Code: Alles auswählen
if (empty($_POST['UserName']) AND empty($_POST['UserMail']) AND empty($_POST['UserPass'])) {
=Max=
Mitglied
 
Beiträge: 444
Registriert: 14.01.2007, 18:59


Zurück zu PHP

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast