Robert B.: Body Tag schließt nicht

Beitrag lesen

Moin,

Das Problem ist, dass der body Schließungstag nicht richtig funktioniert. Das ist der Quelltext:

Der schließende body-Tag funktioniert, die Fehlermeldung kommt von PHP:

Parse error: syntax error, unexpected end of file on line 25.

Das heißt, dass du irgendwo noch eine Klammer offen hast. Schau mal beim else nach.

<html>
<body>
<?php
$error = ""; 
if($_SERVER['REQUEST_METHOD'] == "POST") {
	if(empty(htmlspecialchars(stripslashes(trim($_POST["Name"]))))) {
		$error = "Der Name ist ein Pflichtfeld!!!!!!!!!!!!!!!!!!!!!!!!!";
	}
	elseif (filter_var(htmlspecialchars(stripslashes(trim($_POST["email"]))), FILTER_VALIDATE_EMAIL)) {
		$error = "Keine Valide Email";
	}
	else {
	echo "Hallo " . htmlspecialchars(stripslashes(trim($_POST["name"]))).
	"<br>Der Newsletter wird gesendet an:" . htmlspecialchars(stripslashes(trim($_POST["email"])));
}

?>

<form action="<?php echo htmlspecialchars($_SERVER["php_self"]);?>" method="POST">
<input type="text" name="name" placeholder="Name">
<input type="text" name="email" placeholder="Email">
<?php echo $error; ?>
<input type="submit" value="Senden">
</form>
</body>
</html>

Außerdem noch ein paar Anmerkungen zu deinem Code:

  • Die doppelten Quotes brauchst du nur, wenn du Variablen expandieren möchtest, ansonsten reichen die einfachen.
  • Wenn du auf echte Gleichheit testen möchtest, nimm === statt ==.
  • Verwende stripslashes nur, wenn du genau weißt, was du tust. Normalerweise brauchst du das heute nicht mehr – bzw. du kannst die Konfiguration abfragen, ob Slashes hinzugefügt werden.
  • Das kann zu Überraschungen führen, weil htmlspecialchars den Input in eine Form bringen kann, für die filter_var fehlschlägt: filter_var(htmlspecialchars(stripslashes(trim($_POST["email"]))), FILTER_VALIDATE_EMAIL).
  • Du führst die Operationen trim und stripslashes mehrfach für die gleichen Variablen aus. Speichere das Ergebnis der Operation doch in einer neuen Variablen.
  • Du brauchst für echo nicht einen String zusammenketten, du kann echo auch wie folgt aufrufen: echo 'Hallo', ' ', 'Welt!', "\n".
  • $_POST['Name'] !== $_POST['name']
  • placeholder sind keine Label!
  • Deine input-Elemente haben keine Länge.

Viele Grüße
Robert

[edited: Variablen expandieren, nicht extrapolieren, Tom S.]

0 74

Body Tag schließt nicht

af2111
  • html
  • php
  1. 2
    Regina Schaukrug
    1. 0
      TS
  2. 2
    Robert B.
    1. 0
      Regina Schaukrug
  3. 0
    beatovich
  4. 0
    m.
  5. 0
    Gunnar Bittersmann
    1. 1
      Matthias Apsel
      1. 0
        Gunnar Bittersmann
        1. 0
          beatovich
          1. 1
            JürgenB
            • menschelei
          2. 0
            m.
            1. 0
              beatovich
              1. -1
                m.
              2. -2
                m.
                1. 1
                  Matthias Apsel
                  • zu diesem forum
                  1. 0
                    m.
                    1. 0
                      Regina Schaukrug
                      1. 0
                        m.
                        1. 0
                          beatovich
                        2. 1

                          Zu jedem Forum

                          Regina Schaukrug
                    2. 0
                      Matthias Apsel
          3. 0
            Gunnar Bittersmann
            • html
            1. 0
              m.
              1. 0
                Gunnar Bittersmann
                • design
                1. 0
                  beatovich
                  1. 0
                    Gunnar Bittersmann
                    1. 0
                      beatovich
                      1. 0
                        Gunnar Bittersmann
                        1. 0
                          Matthias Apsel
                      2. 0
                        Regina Schaukrug
                        1. 0
                          Matthias Apsel
                          1. 0
                            Gunnar Bittersmann
                            1. 0
                              m.
                2. 0
                  m.
                  1. 0
                    Matthias Apsel
                    1. 0
                      m.
                      1. 0
                        Matthias Apsel
                    2. 0
                      Gunnar Bittersmann
                      1. 0
                        Matthias Apsel
                        1. 0
                          Gunnar Bittersmann
                          1. 0
                            m.
                3. 0
                  JürgenB
                  1. 0
                    Gunnar Bittersmann
                    1. 0
                      Regina Schaukrug
                      1. 0
                        Gunnar Bittersmann
                        1. 0
                          Regina Schaukrug
                      2. 0
                        m.
                        1. 0
                          Matthias Apsel
                          • html
                    2. 0
                      JürgenB
            2. 0
              beatovich
              1. 0
                m.
              2. 0
                Gunnar Bittersmann
                • formulare
                • ux
                1. 0
                  m.
                2. 0
                  beatovich
                  1. 0
                    Gunnar Bittersmann
                    1. 0
                      beatovich
        2. 0
          Gunnar Bittersmann
          • design
          • formulare
          • lesetipp
        3. 0
          Gunnar Bittersmann
          1. 0
            beatovich
  6. 0
    af2111
    • html
    1. 0
      Matthias Apsel
      1. 0
        Gunnar Bittersmann
    2. 0
      beatovich
    3. 1
      MudGuard
      1. 0
        Matthias Apsel
    4. 0
      Gunnar Bittersmann
  7. 0
    Matthias Apsel
    • html
  8. 0
    af2111
    1. 0
      m.
    2. 0
      Regina Schaukrug
    3. 0
      Robert B.
  9. 0
    af2111