form sendet keine POST-Werte
Linuchs
- html
Moin,
seit einigen Tagen grüble ich über ein Problem. Die URL https://remso.eu/30692 bezeichnet eine anonym eingegebene Veranstaltung. Ein Mitglied kann durch Eingabe seiner Daten die Veranstaltung zu seiner erklären:
<!-- [abschnitt_uebernahme] -->
<form class="screen main" action='' method='post' accept-charset="UTF-8" style="background-color:#080; padding:5px;color:#fff;">
<input type='hidden' name='zp' value='p593' />
<input type='hidden' name='lg' value='de' />
<input type='hidden' name='TID' value='30693' />
<p class="co mb00">Event ohne Veranstalternummer (VIP). Ist das dein Event?<br>
VIP:
<input
type = text
name = 'VIP_MAIL'
maxlength = 50
style = 'width:6em'
value = ''
/>
Passwort:
<input
type = password
name = 'pw'
maxlength = 20
style = 'width:6em'
/>
<!--
<input
type = 'submit'
name = 'submit_uebernahme'
value = "übernehmen"
style = 'font-weight:bold'
-->
<button
name = 'submit_uebernahme'
title = 'submit_uebernahme'
value = 1
style = 'font-weight:bold'
>übernehmen</button>
</p>
</form>
<!-- [/abschnitt_uebernahme] -->
Bei Klick auf den Button wird die Seite neu geladen wie erwartet, aber im $_POST fehlen alle sechs Werte der form.
Erst heute fällt mir ein, dass es diese URL gar nicht gibt, das Programm error_404.php wird aufgerufen, analysiert die Eingabe, erkennt die Zahl als id einer Veranstaltung und zieht sich das Programm p593.php als include rein.
Genau dieselbe Seite, bei der POST auch abgeschickt wird, ergibt sich mit dem richtigen Parameter termin_id (TID): https://remso.eu/?TID=30692
Liegt das Nicht-Füllen des $_POST-Arrays daran, dass der PHP-Code per include nachgeladen wurde?
Unterhalb der Seite zeige ich testweise die empfangenen $_GET und $_POST Werte.
Hinweis: error_404.php macht dies:
$_GET['TID'] = $parameter;
include ( "./index.php" );
Wird durch Aufruf von index.php das POST- und GET-Array gelöscht? Nee, kann nicht sein, denn die TID wird im index.php richtig ausgewertet. Komisch
Hallo Linuchs,
dein Post ist etwas verwirrend. Vermutlich deshalb, weil Du selber verwirrt bist 😉
Ich müsste es jetzt mit einem Apache ausprobieren, was mir als Nicht-Indianer erstmal einiges an Handbuchstudium bescheren würde, aber ich würde annehmen, dass die Umleitung zur Error-Page den Post-Body verwirft und die Error-Seite als GET-Request holt.
Rolf
Hallo Rolf,
dein Post ist etwas verwirrend. Vermutlich deshalb, weil Du selber verwirrt bist
So ist es wohl.
Habe nun viel probiert, try and error.
Wenn ich die form abschicke, wird error_404.php gar nicht bemüht. Da war ich also auf der falschen Spur. Aber welche Seite wird dann aufgerufen? Es wird jedenfalls die richtige Seite wieder angezeigt, nur dass ihr $_GET und $_POST nicht bekannt ist.
Dieser try hat mein Problem gelöst:
<!--form ... action='' ...-->
<form ... action='index.php' ...>
Warum, weiß ich allerdings nicht.
Gruß, Linuchs
Hallo Linuchs,
der action-Parameter gibt an, welche Adresse mit dem POST Request zu rufen ist. Ohne action-Parameter wird an genau die Adresse gepostet, von der die Seite abgerufen wurde.
Das war aber nicht remso.eu/index.php?TID=30692, sondern remso.eu/30692. Ich nehme an, das biegst Du im Apache per URL Rewriting auf remso.eu/index.php?TID=30692 um. Oder? ODER? Wie machst Du das genau?
Rolf
Hallo Rolf,
sondern remso.eu/30692. Ich nehme an, das biegst Du im Apache per URL Rewriting auf remso.eu/index.php?TID=30692 um. Oder?
Da das keine vorhandene URL ist, wird error_404.php aufgerufen und analysiert:
$arr_in = array (
...
,'such_name' => trim( $_SERVER["REDIRECT_URL"] )
);
// remso.eu/16430 numerisch ist TID
$parameter = substr( $arr_in['such_name'], 1 );
if ( strlen( $parameter ) == 5 && is_numeric( $parameter )) {
//$_GET['TID'] = $parameter;
$_GET = [];
$_GET['TID'] => $parameter;
}
...
include ( "./index.php" );
Gruß, Linuchs
P.S. Das Umkopieren von REDIRECT_URL habe ich drin gelassen, um Lehrern eine Freude zu machen.
@@Linuchs
P.S. Das Umkopieren von REDIRECT_URL habe ich drin gelassen, um Lehrern eine Freude zu machen.
https://forum.selfhtml.org/cites/1586
😷 LLAP
Ich bin durchgefallen bei der Hilfsschulabschlussprüfung, weil die Hilfe womöglich abgesendet, aber nicht angekommen ist.
Habe mir bessere Lehrer gesucht und Abitur gemacht 😉
Moin Linuchs,
sondern remso.eu/30692. Ich nehme an, das biegst Du im Apache per URL Rewriting auf remso.eu/index.php?TID=30692 um. Oder?
Da das keine vorhandene URL ist, wird error_404.php aufgerufen und analysiert:
ist das per ErrorDocument
in der Apache-Konfiguration gesetzt? Kann es sein, dass POST in diesem Fall gar nicht weitergereicht wird?
Viele Grüße
Robert
Hi,
Bei Klick auf den Button wird die Seite neu geladen wie erwartet, aber im $_POST fehlen alle sechs Werte der form.
Was sagt der Netzwerk-Tab in den Entwicklertools Deines Browsers?
Erst heute fällt mir ein, dass es diese URL gar nicht gibt, das Programm error_404.php wird aufgerufen,
per GET-Weiterleitung?
cu,
Andreas a/k/a MudGuard
@@Linuchs
seit einigen Tagen grüble ich über ein Problem.
Seit einigen Wochen, Monaten, Jahren schlägst du hier immer wieder mit deinen Problemen auf. Und immer wieder ignorierst du alles, was man dir sagt.
Warum sollte man dir hier noch antworten?
VIP: <input type = text name = 'VIP_MAIL' maxlength = 50 style = 'width:6em' value = '' /> Passwort: <input type = password name = 'pw' maxlength = 20 style = 'width:6em' />
Zum dreiundzwölfzigsten Mal: Alle Eingabefelder brauchen eine ihnen zugeordnete Beschriftung! „Ihnen zugeordnet“ heißt nicht nur visuell zugeordnet.
😷 LLAP
Hallo Gunnar,
Und immer wieder ignorierst du alles, was man dir sagt.
Tut er nicht. Er setzt nur andere Prioritäten als Du. Das mag Dich nerven - zu Recht - aber das änderst Du nicht.
Rolf
@@Rolf B
Er setzt nur andere Prioritäten als Du.
Wo es hier um Grundlagen geht, muss man wohl sagen: Er setzt die Prioritäten falsch.
😷 LLAP
Hallo Gunnar,
Alle Eingabefelder brauchen ...
Ist ja ganz nett, dass du den Lehrer mit Zensur (ich denke, das wäre eine 5?) machst.
Ist wie bei meiner Fahrradwerkstatt. Wenn ich komme und sage „die Klingel bimmelt nicht”, reklamieren die erstmal den Reifendruck. Das Problem bleibt, aber man schlägt Rat (nennt man das so, wenn einer Ratschläge ablässt?)
Hallo Linuchs,
Alle Eingabefelder brauchen ...
Ist ja ganz nett, dass du den Lehrer mit Zensur (ich denke, das wäre eine 5?) machst.
Es hat etwas mit Qualität und welche Bedeutung man ihr beimisst zu tun.
Ist wie bei meiner Fahrradwerkstatt. Wenn ich komme und sage „die Klingel bimmelt nicht”, reklamieren die erstmal den Reifendruck. Das Problem bleibt, aber man schlägt Rat (nennt man das so, wenn einer Ratschläge ablässt?)
Und dann verlierst du in der Kurve die Bodenhaftung und sagst, „aber das Rad war doch gerade erst in der Werkstatt!“
Viele Grüße
Robert
Hallo Robert,
Es hat etwas mit Qualität und welche Bedeutung man ihr beimisst zu tun.
Ich kenne das ja auch. Wenn eine harte Logik-Nuss zu knacken ist, kümmere ich mich erstmal um die Textfarben, damit man das (spätere) Ergebnis besser lesen kann.
Sozusagen zum Warm-Werden, Mich-An-Das-Problem-Ranschleichen. Hilft oft 😉
Hi there,
Ist wie bei meiner Fahrradwerkstatt. Wenn ich komme und sage „die Klingel bimmelt nicht”, reklamieren die erstmal den Reifendruck. Das Problem bleibt, aber man schlägt Rat (nennt man das so, wenn einer Ratschläge ablässt?)
Und dann verlierst du in der Kurve die Bodenhaftung und sagst, „aber das Rad war doch gerade erst in der Werkstatt!“
Ja, aber dann kann er um Hilfe klingeln...😉
Hallo Linuchs,
es ist ja nicht so, dass sich keiner um deine eigentliche Frage kümmert, wobei diese Frage schon knifflig zu adressieren ist.
Aber machen wir's andersrum: Du kommst in die Werkstatt, weil der Druck im Reifen nicht hält. Oder weil das Rücklicht nicht brennt. Oder das Tretlager quietscht. Oder das Schutzblech klappappappappert.
Jedesmal sagt Dir der Meister: Übrigens ist Ihre Klingel kaputt. Du sagst "Ja ja" (wenn überhaupt) - und von Werner haben wir gelernt, was "Ja ja" bedeutet. Wozu eine Klingel? Du hast doch Augen zum gucken.
Der Defekt, der Dich in die Werkstatt geführt hat, wird vom Lehrling oder vom Gesellen behoben, du fährst mit kaputter Klingel davon und kommst irgendwann mit einem anderen Defekt - und kaputter Klingel - wieder. Und beschwerst Dich dann über den grantigen Tonfall des Meisters, wenn er wieder mal auf die Klingel zeigt.
Die kaputte Klingel - a.k.a. die inputs ohne label - sind kein lässlicher Fehler. Es handelt sich um einen relevanten Defekt der Webseite.
Rolf
Hallo Rolf,
inputs ohne label - sind kein lässlicher Fehler. Es handelt sich um einen relevanten Defekt der Webseite.
„Das label-Element stellt eine Beschriftung für Formularelemente dar.“
Habe ich ja beschriftet, selfHTML möchte es doppelt, aber leider kein Beispiel, wie es aussieht:
<label for="vorname">
Vorname: <input name="vorname" id="vorname" placeholder="Max">
</label>
Und dann noch ummantelt von <legend>Name</legend>
, der logischerweise zu adresse
gehört, die wiederum zu kundenstammsatz
usw. Wo ist der Sinn?
Bei Checkboxen und Radiobuttons verwende ich label, damit man nicht ins winzige Loch zielen muss:
Gruß, Linuchs
Hallo,
Habe ich ja beschriftet, selfHTML möchte es doppelt
wie doppelt? - Das im Beispiel ebenfalls dargestellte label für ein fieldset ist doch eine ganz andere Baustelle.
<label for="vorname"> Vorname: <input name="vorname" id="vorname" placeholder="Max"> </label>
Wo ist da was doppelt?
Und dann noch ummantelt von
<legend>Name</legend>
, der logischerweise zuadresse
gehört, die wiederum zukundenstammsatz
usw. Wo ist der Sinn?
Es ist ein völlig anderer Anwendungsfall.
Bei Checkboxen und Radiobuttons verwende ich label, damit man nicht ins winzige Loch zielen muss
Das ist einer der Vorzüge von label-Elementen.
May the Schwartz be with you
Martin
Sag doch mal auf deutsch, wozu label und id zu Textfeldern gut sein soll? Für Blinde zum Vorlesen?
Hallo,
Sag doch mal auf deutsch, wozu label und id zu Textfeldern gut sein soll? Für Blinde zum Vorlesen?
das auch - aber auch Sehenden möchte man verraten, was sie in die Felder eintragen sollen. Das placeholder-Attribut ist dafür unbrauchbar, weil es nicht mehr angezeigt wird, sobald etwas in Textfeld eingetragen ist. Schreibe ich also zlprx hinein, erkenne ich ohne label nicht mehr, was da wirklich erwartet wird.
May the Schwartz be with you
Martin
@@Linuchs
Sag doch mal auf deutsch, wozu label und id zu Textfeldern gut sein soll?
Zum Herstellen der Verknüpfung zwischen Eingabefeld und Beschriftung.
Ohne label
besteht nur eine visuelle Verbindung, wenn die Beschriftung in der Nähe des Eingabefeldes positioniert ist.
Mit label
– also mit richtiger Verknüpfung – wird bspw. das Eingabefeld fokussiert, wenn man auf die Beschriftung clickt. Wie du selbst sagtest: besonders wichtig bei Radiobuttons und Checkboxen.
Für Blinde zum Vorlesen?
Auch das. Übrigens sind nicht alle Screenreader-Nutzer blind. Manche sind sehschwach, andere können trotz voller Sehschärfe schlecht lesen.
😷 LLAP
wird bspw. das Eingabefeld fokussiert
Habe ich mal ausprobiert.
Naja ... Wer klickt denn neben das Text-Eingabefeld, um den Corsor ins Feld zu setzen?
Da brauche ich für jedes Feld 3 Zeilen zusätzlich:
<!-- ALT: --
VIP:
<input
type = text
name = 'VIP_MAIL'
maxlength = 50
style = 'width:6em'
value = ''
/>
-->
<!-- NEU: -->
<label for="VIP_MAIL">
VIP:
<input
type = text
id = 'VIP_MAIL'
name = 'VIP_MAIL'
maxlength = 50
style = 'width:6em'
value = ''
/>
</label>
Wenn ich bedenke, dass Google sogar die Zeilenschaltung aus dem HTML-Code eliminiert ... Es läppert sich, was da zu übertragen ist.
@@Linuchs
Wenn ich bedenke, dass Google sogar die Zeilenschaltung aus dem HTML-Code eliminiert ... Es läppert sich, was da zu übertragen ist.
Du willst jetzt beim Sparen aber nicht bei ein paar Zeichen HTML-Code anfangen, oder?
Wenn du sparen willst: Bilder. Dein Remso-Logo bspw. wäre ein Kanditat für SVG.
Ist das eigentlich gewollt, dass das so abgeschnitten ist?
In der Grafik ist das r vollständig und auch der Notenhals lang.
😷 LLAP
Hi,
Ist das eigentlich gewollt, dass das so abgeschnitten ist?
In der Grafik ist das r vollständig und auch der Notenhals lang.
Wenn's beabsichtigt wäre, hätte das mit V beginnende Wort ein u anstelle des ersten a 😉
cu,
Andreas a/k/a MudGuard
Hallo MudGuard,
man könnte es auch künstlerisches Design nennen.
Rolf
@@MudGuard
Wenn's beabsichtigt wäre, hätte das mit V beginnende Wort ein u anstelle des ersten a 😉
MadGuard!
😷 LLAP
Hi,
@@MudGuard
Wenn's beabsichtigt wäre, hätte das mit V beginnende Wort ein u anstelle des ersten a 😉
MadGuard!
FAIL! Das Wort beginnt mit M, nicht mit V! 😉
cu,
Andreas a/k/a MudGuard
Hallo MudGuard,
ein M ist doch nichts weiter als der Betrag eines V.
Rolf
Moin Linuchs,
wird bspw. das Eingabefeld fokussiert
Habe ich mal ausprobiert.
Naja ... Wer klickt denn neben das Text-Eingabefeld, um den Corsor ins Feld zu setzen?
Die Frage ist nicht, wer so klickt, sondern wessen User-Agent beim Finden hilfreich sein kann.
Da brauche ich für jedes Feld 3 Zeilen zusätzlich:
<!-- ALT: -- VIP: <input type = text name = 'VIP_MAIL' maxlength = 50 style = 'width:6em' value = '' /> -->
Die Zeichen dieser drei Zeilen kannst du allein schon durch das Weglassen der Leerzeichen vor und nach den Gleichheitszeichen wieder einsparen. Außerdem brauchst du leere value
doch gar nicht zu notieren, also wieder etwas gespart.
Wenn ich bedenke, dass Google sogar die Zeilenschaltung aus dem HTML-Code eliminiert ... Es läppert sich, was da zu übertragen ist.
Wenn du die richtigen Newlines verwendest, haben die genau so viel Byte wie ein Leerzeichen: genau 1. Wie gesagt, du gehst mit Leerzeichen ziemlich verschwenderisch um.
Viele Grüße
Robert
Da brauche ich für jedes Feld 3 Zeilen zusätzlich:
<!-- ALT: -- VIP: <input type = text name = 'VIP_MAIL' maxlength = 50 style = 'width:6em' value = '' /> -->
Die Zeichen dieser drei Zeilen kannst du allein schon durch das Weglassen der Leerzeichen vor und nach den Gleichheitszeichen wieder einsparen. Außerdem brauchst du leere
value
doch gar nicht zu notieren, also wieder etwas gespart.
Ergänzend dazu:
type=text
ist der Default-Wert, könnte also weggelassen werden. Noch eine Zeile gespart.Wie sinnvoll die Angabe von maxlength
ist, muss Linuchs selbst wissen. Tendenziell würde ich das auch weglassen. Also insgesamt drei Zeilen gespart, die zur Verbesserung der Barrierefreiheit eingesetzt werden können ;-)
@@Zeichensparer
Wie sinnvoll die Angabe von
maxlength
ist, muss Linuchs selbst wissen. Tendenziell würde ich das auch weglassen.
Hab unlängst erst bei uns auch von einer Längenbeschränkung von E-Mail-Adressen auf 50 Zeichen gehört. Möglich, dass die von SAP kommt.
Was das Backend nicht verarbeiten kann, sollte man im Frontend gar nicht erst eingeben können.
😷 LLAP
Hallo Linuchs,
meinst Du mit "doppelt" das Schachteln vom input ins label plus ID? Das möchte nicht Selfhtml, sondern kaputte Screenreader, die ohne ID das Label dem Input nicht zugeordnet bekommen. Leider gips die.
Ansonsten wüsste ich nicht, was wir doppelt moppeln würden. Außer den Ermahnungen an Dich, zugängliche Webseiten zu bauen. Die moppeln wir aber nicht doppelt - das reicht nicht - sondern reiben sie Dir als memoria perpetua ein 😉
Rolf
@@Rolf B
meinst Du mit "doppelt" das Schachteln vom input ins label plus ID? Das möchte nicht Selfhtml, sondern kaputte Screenreader, die ohne ID das Label dem Input nicht zugeordnet bekommen. Leider gips die.
Hm, weiß nicht.
Aber Dragon kriegt das nicht auf die Reihe. Kein Screenreader, sondern Text-to-speech-Software.
😷 LLAP
@@Linuchs
selfHTML möchte es doppelt
??
aber leider kein Beispiel, wie es aussieht:
<label for="vorname"> Vorname: <input name="vorname" id="vorname" placeholder="Max"> </label>
Sieht doch als Beispiel ganz gut aus. Bis auf die unnützen placeholder
. Ich hab sie im Wiki gleich mal entsorgt.
So könnte es auch aussehen:
<label for="vorname">Vorname:</label>
<input name="vorname" id="vorname"/>
Und dann noch ummantelt von
<legend>Name</legend>
, der logischerweise zuadresse
gehört
??
legend
ist die Beschriftung für das fieldset
-Element, das zusammengehörige Eingabefelder gruppiert.
Der Nutzen ist bei Vorname und Familienname fraglich. Screenreader lesen AFAIK die Beschriftung der Gruppe bei jedem Eingabefeld mit vor, also sowas wie „Eingabefeld Vorname, Name“ und „Eingabefeld Familienname, Name“. Etwas geschwätzig in dem Fall.
Bei Radiobuttons ist es hingegen angebracht, die zusammengehörigen in ein fieldset
zu packen. Bei „männlich“/„weiblich“/„divers“ wäre auch ohne legend
verständlich, dass es ums Geschlecht geht; bei anderen Anwendungsfällen braucht man schon das große Ganze, worum es bei den Optionen geht.
😷 LLAP
PS. Ich habe das Layout der Wiki-Seite kaputtgemacht.
Ich habe das kappute Layout der Wiki-Seite sichtbar gemacht. Man sollte doch erwarten dürfen, dass man beim Editieren von Code nicht selbst auf die Zeilenlänge achten muss, sondern das Stylesheet das regelt?
Hallo Gunnar,
so besser? Ich habe den Textteil der HTML-El-Referenz Vorlage auf 43em limitiert.
Rolf
@@Rolf B
so besser? Ich habe den Textteil der HTML-El-Referenz Vorlage auf 43em limitiert.
Jetzt nicht nur ein horizontaler Scrollbalken, sondern zwei. Gab’s die im Doppelpack billiger?
😷 LLAP
Hallo Gunnar,
nur für Leute mit schmalem Bildschirm. Die Gesamtseite hat eine Mindestbreite, deswegen gibt's den Scrollbar für alles.
Mach einen besseren Vorschlag. Die HTML Elementreferenz scheint nicht gut nach unten zu skalieren.
Rolf
@@Rolf B
Mach einen besseren Vorschlag.
Responsive design. 😏
😷 LLAP
Hallo Gunnar,
meh - bring konkretes CSS und lass mich nicht basteln... Wer ist denn hier der CSS Gott?
Rolf
Hallo,
meh - bring konkretes CSS und lass mich nicht basteln... Wer ist denn hier der CSS Gott?
d'accord, aber ohne Gunnars CSS-Kenntnisse und -Fertigkeiten schmälern zu wollen - Gott ist dann doch sehr dick aufgetragen. Ich denke nicht, dass irgendjemand diesem Titel gerecht würde. Und das sage ich als Religions-Abstinenzler.
May the Schwartz be with you
Martin
@@Rolf B
Wer ist denn hier der CSS Gott?
Gott ist eine Frau: Lea Verou.
“You can have a CSS goddess making every corner like a rounded corner”, schrieb ich vor einiger Zeit mal.
😷 LLAP
Hallo
Wer ist denn hier der CSS Gott?
Gott ist eine Frau: Lea Verou.
“You can have a CSS goddess making every corner like a rounded corner”
dann bleibe ich doch lieber bei den Ungläubigen: Ecken und Kanten machen Alltagsgegenstände besser greifbar als runde Formen (Ergonomie). Ecken und Kanten machen Formen markanter und schöner (Ästhetik).
Während der zweite Aspekt reine Geschmackssache ist, ärgere ich mich fast täglich über sogenannte Designer, die den ersten Aspekt nicht verstehen wollen und mir rundgelutschte Fernbedienungen, Handys oder Lebensmittel-Verpackungen andrehen wollen, die so griffig und flutschig sind wie ein nasses St.ck Seife.
schrieb ich vor einiger Zeit mal.
Das hört sich an, als wäre sie deine Frau - zumindest in deinen Träumen.
May the Schwartz be with you
Martin
@@Der Martin
“You can have a CSS goddess making every corner like a rounded corner”
Das hört sich an, als wäre sie deine Frau
„You“ bezieht sich auf die Front-Trends-Konferenz.
Und wenn ich noch auf aktuellem Stand bin, ist sie die Frau von Chris Lilley – einer der Autoren der SVG-Spezifikation.
😷 LLAP
@@Linuchs
Ist wie bei meiner Fahrradwerkstatt. Wenn ich komme und sage „die Klingel bimmelt nicht”, reklamieren die erstmal den Reifendruck.
Nein. So geht der Vergleich: Die sagen, dass der Rahmen gebrochen ist. Du setzt dich trotzig auf dein kaputtes Fahrrad und radelst davon.
😷 LLAP
Hallo,
Die sagen, dass der Rahmen gebrochen ist.
ich dachte, gebrochen hat ... ach nee, das tut der Radfahrer dann später. 😁
May the Schwartz be with you
Martin