af2111: Body Tag schließt nicht

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

Hallo

Ich Mache gerade einen PHP Kurs und versuche, für jede dazugelernte Sache ein Codebeispiel zu programmieren. Gerade bin ich bei der Sicherheit von Forms und habe eine dazugehörige Seite geschrieben. Das Problem ist, dass der body Schließungstag nicht richtig funktioniert. Das ist der Quelltext:

<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>

Aber wenn ich das ausführe, kommt diese Fehlermeldung: Parse error: syntax error, unexpected end of file on line 25, obwohl ich html und body doch geschlossen habe. Kann mir da jemand helfen?

  1. Du hast 4 öffnende "Brackets" ({). Aber nur 3 schließende "Brackets" (}).

    Tipp:

    Die nicht gegebene Paarigkeit von {}, (), [], "", '' ist bei:

    Parse error: syntax error, unexpected end of file
    

    die regelmäßig zu suchende Ursache.

    Tipp 2:

    if(empty(htmlspecialchars(stripslashes(trim($_POST["Name"]))))){
    

    Wozu willst Du den Inhalt erst "stripslashen" (Das stammt aus Handbüchern zu asbach-alten PHP-Versionen - nämlich als die Globs wie POST, GET, COOKIE noch maskiert wurden.), dann HTML-Zeichen umwandeln, wenn Du das Resultat gar nicht ausgeben sondern nur wissen willst, OB was drin steht?

    if( empty( trim( $_POST["Name"] ) ) ) {
    

    reicht an dieser Stelle also (eigentlich). Allerdings erzeugt das trim( $_POST["Name"] ) schon eine Notiz, wenn "Name" gar nicht gesendet wird. Also:

    if( isset( $_POST["Name"] ) && trim( $_POST["Name"] ) )  {
    

    Und schau Dir die von mir eingefügten Leerzeichen an. Die machen den Code leichter lesbar. Und sorgen (neben guten Editoren) also dafür, dass der oben gesehene Fehler schneller bemerkt wird.

    1. Hello Regina,

      if( isset( $_POST["Name"] ) && trim( $_POST["Name"] ) )  {
      

      Damit bin ich nicht ganz einverstanden. Denn wenn eine "0" drinsteht, würde dies zu Fehlinterpretationen führen, wenn die "0" eine wertige Eingabe darstellt.

      if( isset( $_POST["Name"] ) && strlen(trim($_POST["Name"])) > 0) 
      {  
          ### ...   
      }
      

      Und das gilt auch nur, wenn kein Array erwartet wird...
      Auch ein Leerstring kann eine gültige Eingabe darstellen.
      Man müsste also eher auf den erwarteten Typ prüfen, wobei es in $_POST im Prinzip nur Strings, Arrays und NULL gibt. Eine nicht in den Parametern übermittelte Variable ergibt dann NULL.

      echo 'notset variable: ', (gettype($doof)===NULL)?'TRUE':'FALSE'; 
      

      Liebe Grüße
      Tom S.

      --
      Es gibt nichts Gutes, außer man tut es!
      Das Leben selbst ist der Sinn.
  2. 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.]

      • Verwende stripslashes nur, wenn du genau weißt, was du tust. Normalerweise brauchst du das heute nicht mehr

      Goldrichtig.

      bzw. du kannst die Konfiguration abfragen, ob Slashes hinzugefügt werden.

      Nicht mit aktuellen PHP-Versionen. Das Handbuch zur PHP-Konfiguration::magic_quotes_gpc sagt:

      Dieses Feature ist seit PHP 5.3.0 DEPRECATED (veraltet) und seit PHP 5.4.0 ENTFERNT.

  3. hallo

    Ich Mache gerade einen PHP Kurs und versuche, für jede dazugelernte Sache ein Codebeispiel zu programmieren. Gerade bin ich bei der Sicherheit von Forms und habe eine dazugehörige Seite geschrieben. Das Problem ist, dass der body Schließungstag nicht richtig funktioniert. Das ist der Quelltext:

    <html>
    

    Also es kann nicht schaden, eine komplettes Grundgerüst auszugeben, vor allem

    <!DOCTYPE html>
    <html lang="de">
    <head>
      <meta charset="utf-8">
      <title>formular</title>
    </head>
    

    <body> <?php $error = ""; if($_SERVER['REQUEST_METHOD'] == "POST") { if(empty(htmlspecialchars(stripslashes(trim($_POST["Name"]))))) {

    Dieser Code macht mir schwindel...

    Sollte man trim nicht direkt vor empty ausführen?

    <form action="<?php echo htmlspecialchars($_SERVER["php_self"]);?>" method="POST"> <input type="text" name="name" placeholder="Name">

    label fehlt, required Attribut wäre sinnvoll

    <input type="text" name="email" placeholder="Email">

    label fehlt, required Attribut wäre sinnvoll

    <?php echo $error; ?>

    Also mindestens in einem <p> ausgeben darf schon sein...

    <input type="submit" value="Senden"> </form> </body> </html>

    Aber wenn ich das ausführe, kommt diese Fehlermeldung:
    Parse error: syntax error, unexpected end of file on line 25, obwohl ich html und body doch geschlossen habe.
    Kann mir da jemand helfen?
    
  4. Mahlzeit,

    else { echo "Hallo " . htmlspecialchars(stripslashes(trim($_POST["name"]))). "<br>Der Newsletter wird gesendet an:" .htmlspecialchars(stripslashes(trim($_POST["email"])));

    Ne { will auch geschlossen werden😉

    --
    42
  5. @@af2111

    	if(empty(htmlspecialchars(stripslashes(trim($_POST["Name"]))))) {
    

    htmlspecialchars() ist bei der Ausgabe von Werten in HTML sinnvoll. Hier also nicht …

    		$error = "Der Name ist ein Pflichtfeld!!!!!!!!!!!!!!!!!!!!!!!!!";
    

    „Mehrere Ausrufezeichen, fuhr er fort und schüttelte den Kopf. Sicheres Zeichen für einen kranken Geist.“ (Terry Pratchett in „Eric“)

    	elseif (filter_var(htmlspecialchars(stripslashes(trim($_POST["email"]))), FILTER_VALIDATE_EMAIL)) {
    

    … und hier auch nicht.

    <input type="text" name="name" placeholder="Name">
    <input type="text" name="email" placeholder="Email">
    

    Dass die Beschtiftung mit label fehlt, wurde schon gesagt. Dass Placeholder i.a.R. fehl am Platze sind, noch nicht.

    Placeholder sind kein Ersatz für Labels!Wirklich nicht!

    <input type="submit" value="Senden">
    

    Ein Button sollte ein button sein.

    LLAP 🖖

    --
    „Wer durch Wissen und Erfahrung der Klügere ist, der sollte nicht nachgeben. Und nicht aufgeben.“ —Kurt Weidemann
    1. Hallo Gunnar Bittersmann,

      Dass Placeholder i.a.R. fehl am Platze sind, noch nicht.

      Aber ja doch. 😝

      Bis demnächst
      Matthias

      --
      Rosen sind rot.
      1. @@Matthias Apsel

        Dass Placeholder i.a.R. fehl am Platze sind, noch nicht.

        Aber ja doch. 😝

        Aber nicht doch.

        Da steht: „placeholder sind keine Label!“ Placeholder sind kein Ersatz für Label.

        Da steht aber nicht: Placeholder gar nicht verwenden.

        Darauf wollte ich hinaus: Placeholder sind auch dann, wenn Label vohanden sind, i.a.R. zu nichts gut. Nicht nur das, sie sind i.a.R. schlecht.

        LLAP 🖖

        --
        „Wer durch Wissen und Erfahrung der Klügere ist, der sollte nicht nachgeben. Und nicht aufgeben.“ —Kurt Weidemann
        1. hallo

          Darauf wollte ich hinaus: Placeholder sind auch dann, wenn Label vohanden sind, i.a.R. zu nichts gut. Nicht nur das, sie sind i.a.R. schlecht.

          Gut, und nun zeige eine Anwendung, in der placeholder nicht schlecht ist.

          1. Hallo Beat,

            da verkneift sich Gunnar schon ein „immer“ und schreibt „i.a.R.“, und dann kommst du daher. 😀

            Gruß
            Jürgen

          2. Mahlzeit,

            Gut, und nun zeige eine Anwendung, in der placeholder nicht schlecht ist.

            Da gibt es kein einziges Eingabefeld, das einen Platzhalter verwenden könnte.

            --
            42
            1. hallo

              Mahlzeit,

              Gut, und nun zeige eine Anwendung, in der placeholder nicht schlecht ist.

              Da gibt es kein einziges Eingabefeld, das einen Platzhalter verwenden könnte.

              Ich finde deine absolute Schlauheit furchterregend.

              1. Mahlzeit,

                Ich finde deine absolute Schlauheit furchterregend.

                Schade, hatte gehofft, du erklärst mir, was du meintest denn wenn ich mit Blindheit geschlagen bin, lasse ich mit gerne von dir sehend machen.

                Scheint mir, dass du zwar mir unterstellst, ein Troll zu sein, selbst aber derjenige bist, der dem Trolltum sehr zugewandt ist.

                --
                42
              2. Mahlzeit,

                lass mich raten, du machst auch Rachebewertungen bei Ebay …

                --
                42
                1. Hallo m.,

                  Bitte unterlasse jetzt die persönlichen Angriffe. Nicht nur in diesem Thread, übrigens.

                  Bis demnächst
                  Matthias

                  --
                  Rosen sind rot.
                  1. Mahlzeit,

                    hast natürlich recht. ein -1 zählt nicht als persönlicher Angriff und bedarf natürlich keiner Reaktion. Auch nicht wenn ich an anderer Stelle als Troll bezeichnet werde von diesem … "Forenteilnehmer" (hätte fast was anderes geschrieben)

                    'Schuldigung, werde mich bemühen in Zukunft mir mehrerelei Mass zu messen. Vielleicht einfach in die Charta schreiben welcher User was darf und wer drauf wie reagieren darf. Das hilft Missverständnisse zu vermeiden. Wie gesagt, bin ich nicht sehr oft hier und daher weiss ich nicht, wer hier alles nen Freibrief hat und wer nicht :)

                    --
                    42
                    1. Auch nicht wenn ich an anderer Stelle als Troll bezeichnet werde von diesem … "Forenteilnehmer"

                      Naja. Du hast es in kurzer Zeit geschafft, mindestens 3 Teilnehmer zu provozieren. Das mag auch gelten, wenn sich mindestens einer davon "freiwillig gemeldet" hat, mindestens zwei sich nicht mit "Ruhm bekleckert" haben und ergo und die Schuld also ganz gewiss nicht nur bei Dir liegt.

                      1. Mahlzeit,

                        Naja. Du hast es in kurzer Zeit geschafft, mindestens 3 Teilnehmer zu provozieren. Das mag auch gelten, wenn sich mindestens einer davon "freiwillig gemeldet" hat, mindestens zwei sich nicht mit "Ruhm bekleckert" haben und ergo und die Schuld also ganz gewiss nicht nur bei Dir liegt.

                        Und deshalb kommt dann ein Vierter der glaubt, mich angehen zu müssen ohne auch nur in irgendeiner Weise was damit zu tun zu haben?

                        Im Übrigen hat er sich über das Shirt aufgeregt, das du gut findest. Damit hat er dich implizit ebenfalls als Troll bezeichnet. Das nur so nebenbei erwähnt.

                        --
                        42
                        1. hallo

                          Mahlzeit,

                          Naja. Du hast es in kurzer Zeit geschafft, mindestens 3 Teilnehmer zu provozieren. Das mag auch gelten, wenn sich mindestens einer davon "freiwillig gemeldet" hat, mindestens zwei sich nicht mit "Ruhm bekleckert" haben und ergo und die Schuld also ganz gewiss nicht nur bei Dir liegt.

                          Und deshalb kommt dann ein Vierter der glaubt, mich angehen zu müssen ohne auch nur in irgendeiner Weise was damit zu tun zu haben?

                          Im Übrigen hat er sich über das Shirt aufgeregt, das du gut findest. Damit hat er dich implizit ebenfalls als Troll bezeichnet. Das nur so nebenbei erwähnt.

                          Scheint so, dass du selber die Aussage deines T-Shirts nicht ertragen kannst.

                          Gut

                        2. Und deshalb kommt dann ein Vierter

                          Oh! Das war in meiner möglicherweise nicht sorgfältigen Zählung der "Freiwillige".

                          Damit hat er dich implizit ebenfalls als Troll bezeichnet.

                          Das, was nicht weg kann, ist das Vermögen, nicht immer alles (und sich selbst nicht) überzubewerten und so weiter. Es scheint mir auch, als wäre es bei mir mit der von mir geforderten Empathie selbst nicht weit her, denn ich hab das nicht so aufgefasst.

                          Mein Tipp:

                          Zurücklehnen, überlegen welche Antwort WIRKLICH sein MUSS und auch mal den Zurück-Button des Browsers benutzen wenn das Ergebnis der Prüfung der eigenen Antwort in Richtung negativ tendiert.

                          Der gilt auch, wenn ich selbst "längst nicht immer frei von Fehl und Tadel" bin.

                          Und Du glaubst gar nicht, welche Wirkung ein freundliches Einlenken haben kann.

                    2. Hallo m.,

                      hast natürlich recht. ein -1 zählt nicht als persönlicher Angriff und bedarf natürlich keiner Reaktion. Auch nicht wenn ich an anderer Stelle als Troll bezeichnet werde von diesem … "Forenteilnehmer" (hätte fast was anderes geschrieben)

                      'Schuldigung, werde mich bemühen in Zukunft mir mehrerelei Mass zu messen.

                      Ich bemühe mich, nicht mit mehrerlei Maß zu messen. Deshalb habe ich auch den Beitrag, den du wahrscheinlich meinst, bereits gelöscht.

                      Bis demnächst
                      Matthias

                      --
                      Rosen sind rot.
          3. @@beatovich

            Darauf wollte ich hinaus: Placeholder sind auch dann, wenn Label vohanden sind, i.a.R. zu nichts gut. Nicht nur das, sie sind i.a.R. schlecht.

            Gut, und nun zeige eine Anwendung, in der placeholder nicht schlecht ist.

            Warum sollte ich das tun? Warum sollte ich das tun?

            Ich habe die Existenz solch einer Anwendung nicht behauptet. Ich hab sie nicht gänzlich infragegestellt.

            Wenn jemand anderes solch eine Anwendung zeigt, bin ich gern bereit zu argumentieren, warum auch dort Placeholder schlecht sind.

            LLAP 🖖

            --
            „Wer durch Wissen und Erfahrung der Klügere ist, der sollte nicht nachgeben. Und nicht aufgeben.“ —Kurt Weidemann
            1. Mahlzeit,

              Wenn jemand anderes solch eine Anwendung zeigt, bin ich gern bereit zu argumentieren, warum auch dort Placeholder schlecht sind.

              Nur mal aus Interesse (ich benutz keine Placeholder, halte ich für überflüssig) aber was ist daran nun schlecht? Überflüssig, ja. Schlecht … sehe ich nicht wirklich.

              Bin aber für Argumente offen 😀

              --
              42
              1. @@m.

                … was ist daran nun schlecht? Überflüssig, ja. Schlecht … sehe ich nicht wirklich.

                Was überflüssig ist, ist schlecht. Er lenkt ab; es verwirrt.

                „Ein Designer hat es nicht dann zur Perfektion gebracht, wenn es nichts mehr hinzuzufügen gibt, sondern dann, wenn man nichts mehr weglassen kann.“ —Antoine de Saint Exupéry

                LLAP 🖖

                --
                „Wer durch Wissen und Erfahrung der Klügere ist, der sollte nicht nachgeben. Und nicht aufgeben.“ —Kurt Weidemann
                1. hallo

                  @@m.

                  … was ist daran nun schlecht? Überflüssig, ja. Schlecht … sehe ich nicht wirklich.

                  Was überflüssig ist, ist schlecht. Er lenkt ab; es verwirrt.

                  Was du als überflüssig erarchtest, ist als persönliches Urteil zu achten. Für dich mag placeholder meist redundant sein. Für andere ist es das nicht.

                  1. @@beatovich

                    Was du als überflüssig erarchtest, ist als persönliches Urteil zu achten.

                    Design ist selten ein persönliches Urteil (im Sinne von: Geschmacksfrage).

                    Design ist ein fachliches Urteil.

                    LLAP 🖖

                    --
                    „Wer durch Wissen und Erfahrung der Klügere ist, der sollte nicht nachgeben. Und nicht aufgeben.“ —Kurt Weidemann
                    1. hallo

                      @@beatovich

                      Was du als überflüssig erarchtest, ist als persönliches Urteil zu achten.

                      Design ist selten ein persönliches Urteil (im Sinne von: Geschmacksfrage).

                      Design ist ein fachliches Urteil.

                      Dann lass dir doch das fachliche Urteil von den Anwendern geben. Viele werden es als redundant sehen, anderen hilft es, denn erwarteten Input zu erkennen.

                      1. @@beatovich

                        Dann lass dir doch das fachliche Urteil von den Anwendern geben. Viele werden es als redundant sehen, anderen hilft es, denn erwarteten Input zu erkennen.

                        Du hast einen Nutzertest zu E-Mail-Eingabefeldern gemacht? Kann ich das Ergebnis deiner Studie mal sehen?

                        LLAP 🖖

                        --
                        „Wer durch Wissen und Erfahrung der Klügere ist, der sollte nicht nachgeben. Und nicht aufgeben.“ —Kurt Weidemann
                        1. Hallo Gunnar Bittersmann,

                          Du hast einen Nutzertest zu E-Mail-Eingabefeldern gemacht?

                          Deine Aussage bezieht sich auf alle Formulare. So hab ich das zumindest gelesen. Jetzt die Einschränkung auf E-Mail-Eingabefelder zu machen, ist schon wieder was anderes.

                          Bis demnächst
                          Matthias

                          --
                          Rosen sind rot.
                      2. Viele werden es als redundant sehen, anderen hilft es, den erwarteten Input zu erkennen.

                        Das unterschreib ich mal mit. Und füge hinzu: Manchmal hilft es, das Format des erwarteten Inputs zu erkennen.

                        1. Hallo Regina Schaukrug,

                          Viele werden es als redundant sehen, anderen hilft es, den erwarteten Input zu erkennen.

                          Das unterschreib ich mal mit. Und füge hinzu: Manchmal hilft es, das Format des erwarteten Inputs zu erkennen.

                          Im Vergleich zum title-Attribut ist der placeholder der klare Sieger. Placeholder haben aber den Nachteil, dass sie verschwinden, wenn man mit der Eingabe beginnt. Also sollten Formatangaben immer sichtbar sein.

                          Bis demnächst
                          Matthias

                          --
                          Rosen sind rot.
                          1. @@Matthias Apsel

                            Also sollten Formatangaben immer sichtbar sein.

                            Oder noch besser: gar nicht vorhanden. Der Nutzer macht seine Eingabe im ihr genehmen Format und die auswertende Anwendung kommt damit klar.

                            LLAP 🖖

                            --
                            „Wer durch Wissen und Erfahrung der Klügere ist, der sollte nicht nachgeben. Und nicht aufgeben.“ —Kurt Weidemann
                            1. Mahlzeit,

                              Oder noch besser: gar nicht vorhanden. Der Nutzer macht seine Eingabe im ihr genehmen Format und die auswertende Anwendung kommt damit klar.

                              Praktisch nicht umsetzbar. Wenn mir grad ein eigener Dialekt von Ook! genehm ist, kann die Anwendung damit nicht klar kommen, weil nur ich diesen Dialekt kenne.

                              Ohne exakter(!) Definition des Datenformates ist eine Weiterverarbeitung völlig unmöglich.

                              --
                              42
                2. Mahlzeit,

                  Was überflüssig ist, ist schlecht. Er lenkt ab; es verwirrt.

                  Dann gibt es alleine in diesem Forum mehr schlechte als gute Dinge. Wieso werden die nicht geändert?

                  Ich überlege grad … eigentlich ist mein Cabrio überflüssig weil ich maximal 100km im Monat fahre. Nach deiner Logik ist es also schlecht? Mein Kater hat so gesehen auch keinen Nutzen. Ist er jetzt auch schlecht?

                  Wie weit wollen wir es treiben, bis wir beide merken, dass eine solche Pauschalaussage völlig daneben ist, egal ob nur auf Design bezogen aller auf alles?

                  --
                  42
                  1. Hallo m.,

                    Dann gibt es alleine in diesem Forum mehr schlechte als gute Dinge. Wieso werden die nicht geändert?

                    Weil Betreiber und Programmierer des Forums das anders sehen als Gunnar.

                    Bis demnächst
                    Matthias

                    --
                    Rosen sind rot.
                    1. Mahlzeit,

                      Weil Betreiber und Programmierer des Forums das anders sehen als Gunnar.

                      War Gunnar da nicht mal involviert? Ich muss mal wieder die Mitgliederliste durchsehen … In dem Fall sehe ich es postitiv mit den abweichenden Meinungen 😉

                      --
                      42
                      1. Hallo m.,

                        War Gunnar da nicht mal involviert? Ich muss mal wieder die Mitgliederliste durchsehen … In dem Fall sehe ich es postitiv mit den abweichenden Meinungen 😉

                        Gunnar ist Vereinsmitglied, ja.

                        Bis demnächst
                        Matthias

                        --
                        Rosen sind rot.
                    2. @@Matthias Apsel

                      Dann gibt es alleine in diesem Forum mehr schlechte als gute Dinge. Wieso werden die nicht geändert?

                      Weil Betreiber und Programmierer des Forums das anders sehen als Gunnar.

                      Weil ich noch gar nicht alles aufgezählt habe, was mir am Forums-UI missfällt.

                      Weil ich noch keinen Gegenvorschlag gemacht habe.

                      LLAP 🖖

                      --
                      „Wer durch Wissen und Erfahrung der Klügere ist, der sollte nicht nachgeben. Und nicht aufgeben.“ —Kurt Weidemann
                      1. Hallo Gunnar Bittersmann,

                        Weil ich noch gar nicht alles aufgezählt habe, was mir am Forums-UI missfällt.

                        Zähl doch auch mal auf, was dir alles am Forums-UI gefällt.

                        Bis demnächst
                        Matthias

                        --
                        Rosen sind rot.
                        1. @@Matthias Apsel

                          Zähl doch auch mal auf, was dir alles am Forums-UI gefällt.

                          Das wird schwierig. Was gut ist, fällt ja nicht auf. Gutes Design ist unsichtbar. Sichtbar werden Dinge, die man als unpassend oder störend wahrnimmt.

                          LLAP 🖖

                          --
                          „Wer durch Wissen und Erfahrung der Klügere ist, der sollte nicht nachgeben. Und nicht aufgeben.“ —Kurt Weidemann
                          1. Mahlzeit,

                            Das wird schwierig. Was gut ist, fällt ja nicht auf. Gutes Design ist unsichtbar. Sichtbar werden Dinge, die man als unpassend oder störend wahrnimmt.

                            Ich nehme grad den Text wahr, den du geschrieben hast. Was sagt uns das nun?

                            --
                            42
                3. Hallo Gunnar,

                  ich fand dein „i.a.R.“ schon eine gute Formulierung. Nur weil einem kein (Gegen-)Beispiel einfällt, heist das ja nicht, das es das nicht gibt.

                  Für mich wäre es eine mögliche Anwendung von Placeholdern, wenn für den User ein Beispielinput hilfreich ist.

                  Gruß
                  Jürgen

                  1. @@JürgenB

                    Für mich wäre es eine mögliche Anwendung von Placeholdern, wenn für den User ein Beispielinput hilfreich ist.

                    Aber ein Beispiel, wo das der Fall wäre, fällt dir auch keins ein?

                    LLAP 🖖

                    --
                    „Wer durch Wissen und Erfahrung der Klügere ist, der sollte nicht nachgeben. Und nicht aufgeben.“ —Kurt Weidemann
                    1. Für mich wäre es eine mögliche Anwendung von Placeholdern, wenn für den User ein Beispielinput hilfreich ist.

                      Aber ein Beispiel, wo das der Fall wäre, fällt dir auch keins ein?

                      Ablauf"datum" der Kreditkarte: mm/yyyy (besser zwei Inputs mm yyyy)

                      Ich weiß, dass man da auch ganz anders vorgehen kann oder sogar soll, aber mir hilft sowas. Ganz fürchterlich empfinde ich an dieser Stelle stets diese Select-Dinger.

                      1. @@Regina Schaukrug

                        Ablauf"datum" der Kreditkarte: mm/yyyy

                        Nö.

                        Beschriftung: „gültig bis (Monat/Jahr)“; die Anwendung kommt sowohl mit zwei- als auch vierstelligen Jahreszahlen klar und auch mit verschiedenen Trennzeichen.

                        Welchen weiteren Hinweises sollte es noch bedürfen?

                        (besser zwei Inputs mm yyyy)

                        Nö.

                        Ganz fürchterlich empfinde ich an dieser Stelle stets diese Select-Dinger.

                        +1

                        LLAP 🖖

                        --
                        „Wer durch Wissen und Erfahrung der Klügere ist, der sollte nicht nachgeben. Und nicht aufgeben.“ —Kurt Weidemann
                        1. die Anwendung kommt sowohl mit zwei- als auch vierstelligen Jahreszahlen klar und auch mit verschiedenen Trennzeichen.

                          Welchen weiteren Hinweises sollte es noch bedürfen?

                          Das "nicht wirklich jeder" die in Satz 1 genannte Funktion auf Anhieb oder überhaupt so gut hinbekommt wie wir beide und also dem Geldtransferdienstleister überlässt?

                          Ich kann mir nicht vorstellen das Du DAS GRAUEN in der Realität "da draußen" noch nicht gesehen hast und wenn ich auf mein eigenes Zeug schaue, dann weiß ich auch, dass ich das eigentlich besser kann.

                          (besser zwei Inputs mm yyyy)

                          Nö.

                          Auch nicht mit Fokuswechsel per JS nach dem zweiten Zeichen und ein wenig CSS-Voodoo?

                      2. Mahlzeit,

                        Ablauf"datum" der Kreditkarte: mm/yyyy (besser zwei Inputs mm yyyy)

                        Aber genau dafür gibt es doch Datepicker. Normale Input-Felder sind dann ja in meinen Augen sematisch gar nicht korrekt.

                        --
                        42
                        1. Hallo m.,

                          Ablauf"datum" der Kreditkarte: mm/yyyy (besser zwei Inputs mm yyyy)

                          Aber genau dafür gibt es doch Datepicker.

                          Man pickt sich ja kein date.

                          Normale Input-Felder sind dann ja in meinen Augen sematisch gar nicht korrekt.

                          Richtig. Dafür gibt es die Typen month und year. Year? - Nein, year gibt es nicht. Bleibt also date als sinnvoller Typ. Da dabei im allgemeinen aber ein datepicker geöffnet wird, würde ich dennoch auf text setzen.

                          Bis demnächst
                          Matthias

                          --
                          Rosen sind rot.
                    2. Hallo Gunnar,

                      Für mich wäre es eine mögliche Anwendung von Placeholdern, wenn für den User ein Beispielinput hilfreich ist.

                      Aber ein Beispiel, wo das der Fall wäre, fällt dir auch keins ein?

                      😀

                      Gruß
                      Jürgen

            2. hallo

              @@beatovich

              Darauf wollte ich hinaus: Placeholder sind auch dann, wenn Label vohanden sind, i.a.R. zu nichts gut. Nicht nur das, sie sind i.a.R. schlecht.

              Gut, und nun zeige eine Anwendung, in der placeholder nicht schlecht ist.

              Warum sollte ich das tun? Warum sollte ich das tun?

              Ich habe die Existenz solch einer Anwendung nicht behauptet. Ich hab sie nicht gänzlich infragegestellt.

              Wenn jemand anderes solch eine Anwendung zeigt, bin ich gern bereit zu argumentieren, warum auch dort Placeholder schlecht sind.

              <label>Email <input placeholder="user@example.org"></label>

              Ich höre.

              1. Mahlzeit,

                <label>Email <input placeholder="user@example.org"></label>

                Der Placeholder ist da genau so überflüssig wie bei jeder anderen Anwendung, die ich kenne.

                --
                42
              2. @@beatovich

                Wenn jemand anderes solch eine Anwendung zeigt, bin ich gern bereit zu argumentieren, warum auch dort Placeholder schlecht sind.

                <label>Email <input placeholder="user@example.org"></label>

                Ich höre.

                Der Nutzer bekommt zu sehen:

                Email

                | user@example.org

                und fragt sich: Wollen die mich verarschen? Denken die denn, ich bin blöde und weiß nicht, wie eine E-Mail-Adresse aussieht?

                Für etliche Nutzer stellt der Placeholder ein Ärgernis dar. Und wen nutzt er? Niemandem! Nutzer wissen, was eine E-Mail-Adresse ist.

                Und sollte es jemand nicht wissen, dann hilft demjenigen der Placeholder auch nicht, weil das ganze Formular nicht hilft. Ein Nutzer, der nicht weiß, was eine E-Mail-Adresse ist, wird wohl kaum ein E-Mail-Programm bedienen, also niemals an ihn eingehende Mails lesen. Wozu sollte er seine Mail-Adresse dann überhaupt angeben?

                Abgesehen vom Ärgernis ist ein scheinbar vorausgefülltes Eingabefeld schädlich: Der Nutzer überspringt es (weil: steht ja schon was drin) und schickt das Formular teilweise unausgefüllt ab.

                LLAP 🖖

                --
                „Wer durch Wissen und Erfahrung der Klügere ist, der sollte nicht nachgeben. Und nicht aufgeben.“ —Kurt Weidemann
                1. Mahlzeit,

                  Abgesehen vom Ärgernis ist ein scheinbar vorausgefülltes Eingabefeld schädlich: Der Nutzer überspringt es (weil: steht ja schon was drin) und schickt das Formular teilweise unausgefüllt ab.

                  Oder er ruft an und meldet das nicht funktionierende Formular in dem was drin steht aber beim Absenden meckert es, dass die Mailadresse fehlt 😂

                  --
                  42
                2. hallo

                  @@beatovich

                  Wenn jemand anderes solch eine Anwendung zeigt, bin ich gern bereit zu argumentieren, warum auch dort Placeholder schlecht sind.

                  <label>Email <input placeholder="user@example.org"></label>

                  Ich höre.

                  Der Nutzer bekommt zu sehen:

                  Email

                  | user@example.org

                  und fragt sich: Wollen die mich verarschen? Denken die denn, ich bin blöde und weiß nicht, wie eine E-Mail-Adresse aussieht?

                  Du magst das fragen. Ich Masse mir keine Werturteile in dem Sinne an. Ich fühle mich auch nicht verarscht.

                  Es gibt Fälle, wo ich einen Placeholder sogar als eine Art Bestätigung sehe.

                  Abgesehen vom Ärgernis ist ein scheinbar vorausgefülltes Eingabefeld schädlich: Der Nutzer überspringt es (weil: steht ja schon was drin) und schickt das Formular teilweise unausgefüllt ab.

                  Dass Placeholder in der Gestaltung deutlich unterschieden sein sollen von realem Input, ist klar.

                  Ich will nicht verschweigen, dass man da einiges falsch machen kann.

                  1. @@beatovich

                    Ich will nicht verschweigen, dass man da einiges falsch machen kann.

                    Nämlich: Hinweistext in das Eingabefeld zu schreiben.

                    Sollte wirklich ein Hinweistext zum Ausfüllen erforderlich sein, dann gehört der darüber.

                    LLAP 🖖

                    --
                    „Wer durch Wissen und Erfahrung der Klügere ist, der sollte nicht nachgeben. Und nicht aufgeben.“ —Kurt Weidemann
                    1. hallo

                      @@beatovich

                      Ich will nicht verschweigen, dass man da einiges falsch machen kann.

                      Nämlich: Hinweistext in das Eingabefeld zu schreiben.

                      Sollte wirklich ein Hinweistext zum Ausfüllen erforderlich sein, dann gehört der darüber.

                      Ist das nicht identisch mit der Aussage: placeholder sind immer schlecht?

        2. @@Gunnar Bittersmann

          Da steht aber nicht: Placeholder gar nicht verwenden.

          Darauf wollte ich hinaus: Placeholder sind auch dann, wenn Label vohanden sind, i.a.R. zu nichts gut. Nicht nur das, sie sind i.a.R. schlecht.

          Eric Bailey: Don’t Use The Placeholder Attribute

          Unten im Artikel sind weitere verlinkt.

          LLAP 🖖

          --
          „Wer durch Wissen und Erfahrung der Klügere ist, der sollte nicht nachgeben. Und nicht aufgeben.“ —Kurt Weidemann
        3. @@Gunnar Bittersmann

          Darauf wollte ich hinaus: Placeholder sind auch dann, wenn Label vohanden sind, i.a.R. zu nichts gut. Nicht nur das, sie sind i.a.R. schlecht.

          Weshalb

          [placeholder]
          {
          	ERROR: 'Placeholder used. Don’t!';
          	outline: thick solid red;
          }
          

          in jedes Stylesheet gehört. 😏

          LLAP 🖖

          --
          „Wer durch Wissen und Erfahrung der Klügere ist, der sollte nicht nachgeben. Und nicht aufgeben.“ —Kurt Weidemann
          1. hallo

            @@Gunnar Bittersmann

            Darauf wollte ich hinaus: Placeholder sind auch dann, wenn Label vohanden sind, i.a.R. zu nichts gut. Nicht nur das, sie sind i.a.R. schlecht.

            Weshalb

            [placeholder]
            {
            	ERROR: 'Placeholder used. Don’t!';
            	outline: thick solid red;
            }
            

            in jedes Stylesheet gehört. 😏

            Gut schreibs in dein User-Stylesheet.

  6. Noch eine Frage:

    Wieso ist es so schlecht, Placeholder zu benutzen?

    1. Hallo af2111,

      Wieso ist es so schlecht, Placeholder zu benutzen?

      Es ist nicht unbedingt schlecht, placeholder zu benutzen. Allerdings dürfen sie nicht zweckentfremdet werden

      <input type="email" placeholder="Deine Mailadresse">
      

      Die Beschriftung (Deine Mailadresse) ist keine Beschriftung, nicht Sehende hören hier keine Beschriftung. Wenn man mit dem Ausfüllen beginnt, ist die Beschriftung nicht zu sehen.

      placeholder sind für Beispieleingaben gedacht

      <label for="Name">Name</label>
      <input id="Name" name="Name" placeholder="Max Mustermann">
      

      Hier könnte der placeholder verdeutlichen, dass es keine getrennten Felder für Name und Vorname gibt.

      Siehe etwa https://wiki.selfhtml.org/wiki/HTML/Tutorials/Formulare/Beschriftungen

      Bis demnächst
      Matthias

      --
      Rosen sind rot.
      1. @@Matthias Apsel

        Die Beschriftung (Deine Mailadresse) ist keine Beschriftung, nicht Sehende hören hier keine Beschriftung.

        IIRC lesen manche Screen den Placeholder vor, wenn sie gar nichts anderes zum Vorlesen vorfinden.

        Wenn man mit dem Ausfüllen beginnt, ist die Beschriftung nicht zu sehen.

        Wenn das Feld schon vorausgefüllt ist (bspw. Affenformular), dann schon gar nicht.

        <label for="Name">Name</label>
        <input id="Name" name="Name" placeholder="Max Mustermann">
        

        Hier könnte der placeholder verdeutlichen, dass es keine getrennten Felder für Name und Vorname gibt.

        Ist die Beschriftung des Eingabefeldes mit „Name“ nicht deutlich genug?

        LLAP 🖖

        --
        „Wer durch Wissen und Erfahrung der Klügere ist, der sollte nicht nachgeben. Und nicht aufgeben.“ —Kurt Weidemann
    2. hallo

      Noch eine Frage:

      Wieso ist es so schlecht, Placeholder zu benutzen?

      Ich stimme nicht mit einer grundsätzlich negativen Bewertung ein. Aber man kann Dinge falsch machen:

      Folgende mögliche Fehler

      • CSS: der Platzhalter sieht dem echten Input zu ähnlich
      • placeholder-Text: Er suggeriert eine falsche Voraussetzung.
      • placeholder sind zum Beispiel bei optionalen Feldern möglicherweise irreführend.
      • placeholder wird als Ersatz für Label verwendet.
      • placeholder-Text ist nicht repräsentativ für den erwarteten Input.

      Wenn du diese Fehler vermeidest, kann der placeholder die Art des erwarteten Inputs verdeutlichen.

    3. Hi,

      Wieso ist es so schlecht, Placeholder zu benutzen?

      User verzweifeln bei dem Versuch, den im input vorhandenen Text zu selektieren, um ihn dann zu löschen, damit das Feld erstmal leer ist, bevor sie ihren eigenen Text da reinschreiben - klappt natürlich nicht, weil der Placeholder-Text nicht selektierbar ist.

      Ich hab das schon öfter gesehen, daß User das versucht haben …

      cu,
      Andreas a/k/a MudGuard

      1. Hallo MudGuard,

        Ich hab das schon öfter gesehen, daß User das versucht haben …

        Ja, das kann ich bestätigen.

        Bis demnächst
        Matthias

        --
        Rosen sind rot.
    4. @@af2111

      Wieso ist es so schlecht, Placeholder zu benutzen?

      Eric Bailey führt in Don’t Use The Placeholder Attribute etliche Gründe an.

      LLAP 🖖

      --
      „Wer durch Wissen und Erfahrung der Klügere ist, der sollte nicht nachgeben. Und nicht aufgeben.“ —Kurt Weidemann
  7. Hallo af2111,

    Ich Mache gerade einen PHP Kurs

    obwohl ich html und body doch geschlossen habe.

    Beachte bitte, dass tag und element nicht dasselbe sind.

    Bis demnächst
    Matthias

    --
    Rosen sind rot.
  8. Hallo, ich nochmal

    Ich habe den Code jetzt mithilfe eurer Tipps umgeschrieben.

    Das ist er:

    <!DOCTYPE html>
    <html lang="de">
    <head>
    <meta charset="utf-8">
    <title>Formular</title>
    </head>
    <body>
    <?php
    $error = ''; 
    $Name = htmlspecialchars(stripslashes(trim($_POST["name"])));
    $email = htmlspecialchars(stripslashes(trim($_POST["email"])));
    if($_SERVER['REQUEST_METHOD'] == "POST") {
     if(empty($Name)) {
    		$error = "Der Name ist ein Pflichtfeld!";
    	}
    	elseif (!filter_var($_POST["email"], FILTER_VALIDATE_EMAIL)) {
    		$error = "Keine Valide Email";
    	}
    	else {
    	echo "Hallo " . $Name .
    	"<br>Der Newsletter wird gesendet an:" . $email;
    }
    }
    ?>
    <form action="<?php echo htmlspecialchars($_SERVER["php_self"]);?>" method="POST">
    <label for="Name">Name:</label><input id="Name" required="required" type="text" name="name" placeholder="z.b. Erica/Max Mustermann"><br>
    <label for="Email">Email:</label><input id="Email" required="required" type="text" name="email" placeholder="z.b en@stein.com"><br>
    <?php echo "<p>".$error . "</p>"; ?><br>
    <input type="submit" value="Senden">
    </form>
    </body>
    </html>
    

    Falls jemand noch Tipps hat, kann er sie mir gerne mitteilen.

    1. Mahlzeit,

      Falls jemand noch Tipps hat, kann er sie mir gerne mitteilen.

      Auf jeden Fall den einen: Wenn es irgendwie möglich ist, Datenverarbeitung und Ausgabe nicht vermischen.

      Ich in deinem Fall noch nicht relevant, wenn es aber ein grösseres Projekt wird, wird das extrem unübersichtlich. Deshalb verwenden relevantesten Frameworks MVC (Symfony, Laravel …)

      Ansonsten wesentlich besser als vorher

      --
      42
    2. Na, das geht ja schon mal vorwärts.

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

      Bemühe Dich, den Code sauber einzurücken, lass Leerzeilen für logische Blöcke (auch nach Deinem Belieben, z.B. für zusammenhängende Aktionen), Leerzeichen vor und nach allen Arten von Klammern, sowie dem Negationssymbol !. Wenn es nicht nötig ist, doppelte Quotas (") zu verwenden, dann nimm einfache ('):

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

      Das braucht zwar mehr Platz und ein paar Bytes, erfordert auch anfangs etwas Disziplin - hilft aber ungemein, Fehler wie den ursprünglichen zu vermeiden. Das wirst Du schnell merken.

    3. Moin,

      Falls jemand noch Tipps hat, kann er sie mir gerne mitteilen.

      Da stehen noch ein paar Tipps 😉

      Viele Grüße
      Robert

  9. Und nochmal ich😀😀

    Ich habe jetzt den Code eingerückt.

    Komplettiert eingerückter Code:

    <!DOCTYPE html>
    
    <html lang="de">
    
    	<head>
    		<meta charset="utf-8">
    		
    		
    		<title>Formular</title>
    		
    	</head>
    	
    	<body>
    	
    	<?php
    	
    		$error = ''; 
    
    			$Name = htmlspecialchars ( stripslashes ( trim ( $_POST [ 'name' ] ) ) ) ;
    			
    			$email = htmlspecialchars ( stripslashes ( trim ( $_POST [ "email" ] ) ) ) ;
    			
    		if( $_SERVER[ 'REQUEST_METHOD' ] == 'POST' ) {
    
        if( empty( $Name ) ) {
    
    		    $error = 'Der Name ist ein Pflichtfeld!';
    
    	  } elseif( ! filter_var($_POST[ 'email' ], FILTER_VALIDATE_EMAIL ) ) {
    
    		    $error = 'Keine Valide Email';
    
     	  }	else {
    
    	      echo 'Hallo ' 
                 . $Name
                 .'<br>Der Newsletter wird gesendet an:'
                 . $email;
        }
    }	
    			?>
    	<form action = "<?php echo htmlspecialchars ( $_SERVER [ 'php_self'] ) ; ?> " method = "POST">
    
    	<label for = "Name" >Name:</label><input id = "Name" required = "required" type = "text" name = "name" placeholder = "z.b. Erica/Max Mustermann" ><br>
    
    	<label for = "Email" >Email:</label><input id = "Email" required = "required" type = "text" name = "email" placeholder = "z.b en@stein.com"><br>
    
    	<?php echo '<p>'.$error . '</p>' ; ?> <br>
    
    	<input type = "submit" value = "Senden">
    		</form>
    			</body>
    	</html>
    

    af2111