Body Tag schließt nicht

- html
- php
2 Regina Schaukrug0 TS
2 Robert B.
0 beatovich
0 m.
0 Gunnar Bittersmann
0 af2111
- html
0 Matthias Apsel
- html
0 af2111
0 m.
0 Regina Schaukrug0 Robert B.
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?
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.
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.
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:
===
statt ==
.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.filter_var(htmlspecialchars(stripslashes(trim($_POST["email"]))), FILTER_VALIDATE_EMAIL)
.echo 'Hallo', ' ', 'Welt!', "\n"
.$_POST['Name'] !== $_POST['name']
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.
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?
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😉
@@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 🖖
Hallo Gunnar Bittersmann,
Dass Placeholder i.a.R. fehl am Platze sind, noch nicht.
Bis demnächst
Matthias
@@Matthias Apsel
Dass Placeholder i.a.R. fehl am Platze sind, noch nicht.
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 🖖
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.
Hallo Beat,
da verkneift sich Gunnar schon ein „immer“ und schreibt „i.a.R.“, und dann kommst du daher. 😀
Gruß
Jürgen
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.
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.
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.
Mahlzeit,
lass mich raten, du machst auch Rachebewertungen bei Ebay …
Hallo m.,
Bitte unterlasse jetzt die persönlichen Angriffe. Nicht nur in diesem Thread, übrigens.
Bis demnächst
Matthias
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 :)
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.
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.
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
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.
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
@@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 🖖
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 😀
@@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 🖖
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.
@@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 🖖
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.
@@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 🖖
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
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.
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
@@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 🖖
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.
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?
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
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 😉
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
@@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 🖖
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
@@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 🖖
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?
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
@@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 🖖
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.
@@Regina Schaukrug
Ablauf"datum" der Kreditkarte:
mm/yyyy
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 🖖
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?
Mahlzeit,
Ablauf"datum" der Kreditkarte:
mm/yyyy
(besser zwei Inputsmm
yyyy
)
Aber genau dafür gibt es doch Datepicker. Normale Input-Felder sind dann ja in meinen Augen sematisch gar nicht korrekt.
Hallo m.,
Ablauf"datum" der Kreditkarte:
mm/yyyy
(besser zwei Inputsmm
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
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
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.
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.
@@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:
| 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 🖖
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 😂
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:
| 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.
@@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 🖖
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?
@@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 🖖
@@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 🖖
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.
Noch eine Frage:
Wieso ist es so schlecht, Placeholder zu benutzen?
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
@@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 🖖
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
Wenn du diese Fehler vermeidest, kann der placeholder die Art des erwarteten Inputs verdeutlichen.
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
Hallo MudGuard,
Ich hab das schon öfter gesehen, daß User das versucht haben …
Ja, das kann ich bestätigen.
Bis demnächst
Matthias
@@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 🖖
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
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.
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
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.
Moin,
Falls jemand noch Tipps hat, kann er sie mir gerne mitteilen.
Da stehen noch ein paar Tipps 😉
Viele Grüße
Robert
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