Robert Bienert: <form action=""> vs. PHP_SELF

Beitrag lesen

Moin!

Mein Beitrag bezog sich u.a. auch auf H☼psels Ausführung.
Meine Frage war ja, warum Du meinst, dass eine URI-Angabe "#" besser (Hopsel sagt sicherer in der Funktion) wäre, als "".

Die Wege der Browserhersteller sind unergründlich. Ich weiß jedenfalls, dass man mit # auf der gleichen Seite bleibt – aber halt:

<a href="#">ein Link</a>

Dies führt dazu, dass die aktuelle Seite _nicht noch einmal aufgerufen wird_. Kann es sein, dass der Ansatz

<form action="#" method="post" name="sowieso">

nicht wie beabsichtigt funktioniert?

Beide verlassen sich auf den selben Mechanismus. Deshalb sind beide gleich gut oder schlecht. Browser, die mit einem klar kommen, müssten auch mit dem anderen klar kommen. Der einzige Unterschied ist, dass die Variante "#" später versucht einen Anker anzuspringen.

Sehr interessante Ausführungen in der verlinkten Seite. Was # anbetrifft weiß ich, dass mein obiges Beispiel dazu führt, dass der Browser nach ganz oben scrollt (# scheint also eine Art unbenannter Anker zu sein, der das gleiche wie das früher gebräuchliche #top bewirkt.)

Die Variante "?" ist falsch, weil das Query-Fragezeichen nur in einer relativeURI oder einem hier_part vorkommen darf.
http://www.faqs.org/rfcs/rfc2396.html
relativeURI   = ( net_path | abs_path | rel_path ) [ "?" query ]
hier_part     = ( net_path | abs_path ) [ "?" query ]
Beide dürfen nicht leer sein. Eine URI darf also nicht _nur_ das Fragezeichen enthalten.

Genau das, wollte ich gerade fragen.

Für das sichere Funktionieren garantiert _keine_ der drei Varianten, weil es Browser geben kann, welche die base URI Regelung nicht korrekt umsetzen. Sicher ist also nur, mindestens eine wirkliche relativeURI anzugeben.

Vielen Dank für deine Ausführungen. Um einen bekannten Mann des deutschen Fernsehens zu zitieren: »Haben wir wieder was gelernt.«

Schönes Wochenende,
Robert