Wo steckt der Fehler?

... komplette Frage anzeigen

5 Antworten

Übrigens ist

if ($pw_check == ture AND $name_check == true) {

unnötig (mal vom ture abgesehen). In der If-Abfrage wird schon auf wahr und falsch getestet und du kannst es kürzer so schreiben:

if ($pw_check AND $name_check) {

Eine Ausnahme ist die Prüfung mit === und !== Damit testest du dann, ob der Wert wirklich ein boolscher Wert ist, was bei einigen Funktionen, die einen numerischen Wert zurückliefern, wichtig ist. So kannst du unterscheiden, ob der numerische Wert 0 oder der boolsche Wert FALSE zurückgeliefert wurde. In PHP ist FALSE nämlich 0 und alles ungleich 0 ist TRUE.

if (getNumWert() !== FALSE) {

Diese If-Abfrage funktioniert auch, wenn die Funktion getNumWert() den Wert 0 zurückliefert. Gibt sie jedoch FALSE zurück, dann nicht.

Antwort bewerten Vielen Dank für Deine Bewertung

Du siehst ja selbst, dass das zu unübersichtlich ist. Deshalb ist es (auch wenn du gerade PHP am lernen bist) von Vorteil, sich an einen sog. Codeingstandard zu halten. Das ist die Art und Weise, wie man den Code schreibt (insbesondere die geschweiften Klammern) und sorgt maßgeblich für eine bessere Übersicht. In deinem Code oben gabs ein solches Klammer Problem. Ich war war so frei und hab den entsprechend überarbeitet:

<?php
if(isset($_GET['action']))
{
    switch($_GET['action'])
    {
    case "register":
                // Auswertung: Registrierung
                $name_check = false;
                $pw_check  = false;
                if(isset($_POST['name']))
                {
                    $name = $_POST['name'];
                    if(strlen($name) >= 3) 
                    {
                        $name_check = true;
                    }
                    else
                    {
                        echo "<span style='color:red;'>Der von Ihn eingegebene Nutzername muss mindestens 3 Zeichen lang sein.";
                    }
                }
                else
                {
                    echo "<span style'color:red;'> Sie haben keinen Namen angegeben.";
                }


                if(isset($_POST['pw']))
                {
                    $pw=($_POST['pw']);
                    if(strlen($pw) >=5) 
                    {
                        $pw = md5($pw);
                        $pw_check = true;
                    }
                    else
                    {
                        echo "<span style=color:red;'> Ihr Passwort muss mindestens 5 Zeichen lang sein. </span>";
                        echo "<span style='color:red;'> Sie haben kein Passwort angegeben </span>";
                    }


                    if($pw_check == true AND $name_check == true) 
                    {
                        $name = mysql_real_escape_string($name);
                        $pw   = mysql_real_escape_string($pw);

                        $sql = 'INSERT INTO accounts(username,password) VALUES("'.$name.'","'.$pw.'")'; 
                        $mysql_input = mysql_query($sql);
                        if($mysql_input == true) 
                        {
                            echo "<span style='color:green;'> Glückwunsch,<b>$name</b>, sie haben sich erfolgreich registriert!</span>";
                        }
                    }
                }       
                break;

    case "login":
                echo "Du wolltest dich einloggen, dies ist leider noch möglich.";
                break;  
    }
}

?>

Wenn du öffnende geschweifte Klammer, und schließende geschweifte Klammer immer untereinander setzt, siehst du eher ob du irgendwo eine vergessen hast. Wünsch dir was....

Antwort bewerten Vielen Dank für Deine Bewertung

Ist das wirklich index.php??
Da dieser Code ja nur 42 Zeilen hat, aber der Fehler in Zeile 54 vorkommt?!?!

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von RDRCoD7531
15.10.2012, 18:33

Da ist noch HTML dabei, daran liegt es zu 100% nicht.

0

Tja, was ist immer zu 99,9% der Fälle der Fehler bei PHP-Code??
Richtig! Eine vergessene Klammer :D

if($pw_check == ture AND $name_check == true) {
 $contect = [...]
 $mysql_input = [...]
 if($mysql_input == true) {
  echo [...]
 }
} '<------- Die hier haste vergessen ;)
break;
Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von mikepossible
15.10.2012, 18:50

Und soll das auch so sein??

if($pw_check == ture AND $name_check == true) {

Wirklich ture?? xD

0
Kommentar von RDRCoD7531
15.10.2012, 19:04

Soll das ' auch dazu?

0

Poste doch bitte nochmal einen aktuellen Stand, vielleicht auch bei Github o.ä. So machts keinen Spaß zu raten, wie weit du schon bist. Danke.

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von RDRCoD7531
15.10.2012, 20:07

Xampp zeigt als Fehler: Parse error: syntax error, unexpected 'case' (T_CASE) in C:\xampp\htdocs\php\index.php on line 55

<?php
if(isset($_GET['action'])){
 switch($_GET['action']){
  case "register":
    // Auswertung: Registrierung
    if(isset($_POST['name'])){
      $name = $_POST['name'];
      if(strlen($name) >= 3) {
        $name_check = true;
    }else{
       echo "<span style='color:red;'>Der von Ihn eingegebene Nutzername muss mindestens 3 Zeichen lang sein.";
     }
    }else{
      echo "<span style'color:red;'> Sie haben keinen Namen angegeben.";
    }

    if(isset($_POST['pw'])){
      $pw=($_POST['pw']);
      if(strlen($pw) >=5) {
       $pw = md5($pw);
       $pw_check = true;
      }else{
        echo "<span style=color:red;'> Ihr Passwort muss mindestens 5 Zeichen lang sein. </span>";

        echo "<span style='color:red;'> Sie haben kein Passwort angegeben </span>";
    }

    if($pw_check == true AND $name_check == true) {
      $contect = "INSERT INTO accounts(username,password) VALUES('$name','$pw')"; 
     $mysql_input = mysql_query($content);
      if($mysql_input == true) {
        echo "<span style='color:green;'> Glückwunsch,<b>$name</b>, sie haben sich erfolgreich registriert!</span>";
      }
    }
     break;

    case "login": <----------- **DER FEHLER** 
     echo "Du wolltest dich einloggen, dies ist leider noch nicht möglich.";
    }
   break;
 }
}else{
?>
0

Was möchtest Du wissen?