Ich frage mich, ob jemand eine "Best Practices" -Antwort auf die Verwendung leerer HTML-Formularaktionen geben kann, um auf die aktuelle Seite zurückzukehren.
In einem Beitrag wird gefragt, was eine leere HTML-Formularaktion hier bewirkt, und einige Seiten wie diese schlagen vor, dass dies in Ordnung ist, aber ich würde gerne wissen, was die Leute denken.
forms
web-standards
string
html
Matt Mitchell
quelle
quelle
<form name="xyz" >
). Es wird die Aktion selbst einreichen.Antworten:
Das Beste, was Sie tun können, ist, das Aktionsattribut ganz wegzulassen. Wenn Sie es weglassen, wird das Formular an die Adresse des Dokuments gesendet, dh an dieselbe Seite.
Es ist auch möglich, es leer zu lassen, und jeder Browser, der den Formularübermittlungsalgorithmus von HTML implementiert, behandelt ihn als äquivalent zur Adresse des Dokuments. Dies geschieht hauptsächlich, weil Browser derzeit so funktionieren:
Dies funktioniert definitiv in allen aktuellen Browsern, funktioniert jedoch möglicherweise nicht wie erwartet in einigen älteren Browsern ( " Browser machen seltsame Dinge mit einer leeren Aktion =" "Attribut " ), weshalb die Spezifikation Autoren stark davon abhält, sie leer zu lassen :
quelle
action=""
Tatsächlich erlaubt der Unterabschnitt Formularübermittlung des aktuellen HTML5-Entwurfs dies nicht
action=""
. Es ist gegen die Spezifikation.Der in der Antwort des Mercators zitierte Abschnitt ist eine Anforderung an Implementierungen , nicht an Autoren . Autoren müssen die Autorenanforderungen befolgen. So zitieren Sie diese Spezifikation :
Die Änderung von HTML4, die eine leere URL zuließ, wurde vorgenommen, weil " Browser seltsame Dinge mit einem leeren
action=""
Attribut tun ". In Anbetracht des Grundes für die Änderung ist es wahrscheinlich am besten, dies auch nicht in HTML4 zu tun.quelle
action
Attributs insgesamt, anzugeben, welches Formular an die Dokumentadresse gesendet werden soll? Es scheint, da es sagt, "wenn angegeben".Ohne das Aktionsattribut wird die Seite für Iframe-Clickjacking- Angriffe geöffnet , die einige einfache Schritte umfassen:
Verweise
quelle
$_POST
stattdessen$_REQUEST
, um dies zu vermeiden. Wenn Framework-Code verwendet wird$_REQUEST
, verwenden Sie einen Iframe-Buster .Dies wird mit HTML5 validiert.
quelle
action="."
?action="."
ist eine schlechte Idee für den allgemeinen Fall. Eine URL wieexample.com/login
wird lediglich zugeordnetexample.com/
.IN HTML 5
action=""
WIRD NICHT UNTERSTÜTZT, TUN SIE DAS NICHT. SCHLECHTE PRAXIS.Wenn Sie stattdessen die Aktion vollständig negieren, wird sie standardmäßig auf derselben Seite angezeigt. Ich glaube, dies ist die beste Vorgehensweise:
Wenn Sie das Formular mit PHP bearbeiten, sollten Sie Folgendes berücksichtigen. Lesen Sie hier mehr darüber.
Alternativ können Sie auch
#
bedenken, dass dies wie ein Anker wirkt und zum oberen Rand der Seite scrollen.quelle
htmlspecialchars()
Funktion verhindert jedoch, dass Personen Ihr PHP-Skript gegen Sie verwenden.Normalerweise verwende ich action = "", was XHTML-gültig ist und die GET-Daten in der URL behält.
quelle
Ich denke, es ist am besten, explizit anzugeben, wo das Formular veröffentlicht wird. Wenn Sie absolut sicher sein möchten, geben Sie im Aktionsattribut dieselbe URL ein, auf der sich das Formular befindet, wenn Sie möchten, dass es an sich selbst zurückgesendet wird. Obwohl Mainstream-Browser
""
dieselbe Seite auswerten , können Sie nicht garantieren, dass Nicht-Mainstream-Browser dies tun.Und natürlich weist die gesamte URL einschließlich GET-Daten wie Juddling darauf hin.
quelle
Benutz einfach
Es verstößt nicht gegen HTML5-Standards.
quelle
get
Parameter löschen. Ein Formular auf der folgenden URL würde brechen,example.com/update_user?user_id=1
weil das Formular anexample.com/update_user?
Ich habe das oft gemacht, als ich mit Classic ASP gearbeitet habe. Normalerweise habe ich es verwendet, wenn für die Eingabe eine serverseitige Validierung erforderlich war (vor den Tagen von AJAX). Der Hauptnachteil, den ich sehe, ist, dass die Programmierlogik auf Dateiebene nicht von der Präsentation getrennt wird.
quelle
Ich benutze, um überhaupt kein Aktionsattribut anzugeben. Es ist tatsächlich so, wie mein Framework gestaltet ist. Alle Seiten werden genau an dieselbe Adresse zurückgesendet. Aber heute habe ich ein Problem entdeckt. Manchmal leihe ich mir einen Aktionsattributwert aus, um einen Hintergrundaufruf zu tätigen (ich denke, einige Leute nennen sie AJAX). Daher habe ich festgestellt, dass der IE den Wert des Aktionsattributs leer hält, wenn kein Aktionsattribut angegeben wurde. Nach meinem Verständnis ist dies etwas seltsam, da das JavaScript-Gegenstück mindestens undefiniert sein muss, wenn kein Aktionsattribut angegeben ist. Bevor Sie sich für eine bewährte Methode entscheiden, müssen Sie mehr Kontext verstehen, z. B. ob Sie das Attribut in JavaScript verwenden oder nicht.
quelle