Jeena Paradies: Jemand schon Probleme bei action="" gahabt?

Hallo,

Ich überlege gerade warum man in ein Formular immer eigentlich immer

<form method="post" action="<?php echo basename($_SERVER["PHP_SELF"]); ?>">

also dieses basename($_SERVER["PHP_SELF"]); reinschreibt. Gibt denn Schwierigkeiten wenn man da einfach nichts oder ein # reinschreibt? Es sollte doch dann an die gleiche Adresse geschickt werden oder gibt es da irgendeinen vernünftigen Grund der dagegen sprechen würde?

Grüße
Jeena Paradies

  1. Moin Jeena,

    also dieses basename($_SERVER["PHP_SELF"]); reinschreibt. Gibt denn Schwierigkeiten wenn man da einfach nichts oder ein # reinschreibt? Es sollte doch dann an die gleiche Adresse geschickt werden oder gibt es da irgendeinen vernünftigen Grund der dagegen sprechen würde?

    hast Du es einfach mal getestet?

    Grüsse
    Mike

    --
    Freunde kommen und gehen. Feinde sammeln sich an.
    1. Hallo,

      hast Du es einfach mal getestet?

      Natürlich mit allen Browsern die mir zur Verfügung standen und überall ging es. Ich hab aber nichts exotisches da und überall in allen Beschreibungen die ich gelesen habe wird basename($_SERVER["PHP_SELF"]); eingesetzt. Es muss doch einen Grund haben warum es immer und immer wieder eingesetzt wird. Diesen versuche ich herauszufinden.

      Grüße
      Jeena Paradies

      1. Moin Jeena,

        Natürlich mit allen Browsern die mir zur Verfügung standen und überall ging es. Ich hab aber nichts exotisches da und überall in allen Beschreibungen die ich gelesen habe wird basename($_SERVER["PHP_SELF"]); eingesetzt. Es muss doch einen Grund haben warum es immer und immer wieder eingesetzt wird. Diesen versuche ich herauszufinden.

        vielleicht wurde das nur immer und immer wieder kopiert und niemand hat jemals deine Variante versucht. Wenn es bei den gänigen Browsern funtzt das is ja gut. Mein Vorschlag: Mach mal ein entsprechendes Scripts und lasse es hier mit verschiedenen Browsern durch testen. Dann bist du auf der sicheren Seite.

        Grüsse
        Mike

        --
        Freunde kommen und gehen. Feinde sammeln sich an.
      2. Hallo,

        Natürlich mit allen Browsern die mir zur Verfügung standen und überall ging es. Ich hab aber nichts exotisches da und überall in allen Beschreibungen die ich gelesen habe wird basename($_SERVER["PHP_SELF"]); eingesetzt. Es muss doch einen Grund haben warum es immer und immer wieder eingesetzt wird. Diesen versuche ich herauszufinden.

        Betrachten wir den anderen Fall

        action="scriptname"

        Was passiert, wenn der physische Dateiname "scriptname" in "scriptvorname" geändert wird? Nun, Dein Script greift dann auf einen URL den es nicht gibt. Ist jedoch in der action-note der Scriptname als Variable eingesetzt, geht das Script immer ;-)

        Gruss, Rolf

        In PERL: $ENV{'SCRIPT_NAME'}

        1. Hallo,

          Betrachten wir den anderen Fall
          action="scriptname"

          Ja das ist klar aber was passiert wenn
          action=""

          oder

          action="#"

          Normalerweise müsste der Browser doch noch einmal die gleiche Seite aufrufen, oder?

          Grüße
          Jeena Paradies

          1. hi Jeena,

            Ja das ist klar aber was passiert wenn
            action=""

            oder

            action="#"

            Normalerweise müsste der Browser doch noch einmal die gleiche Seite aufrufen, oder?

            Was soll ich sagen, ich hab's grad eben mal mit PERL getestet: Es tut!

            Genial!

            Also ich bevorzuge dann demnächst:

            action=""

            vs.

            action="#"

            ---> das ist ein Anschlag weniger ;-)

            Gruss, Rolf

            --
            Gute Nacht!
            1. Hallo,

              Was soll ich sagen, ich hab's grad eben mal mit PERL getestet: Es tut!

              Nun ich denke nicht dass es mit dem Server zu tun hat sondern eher mit dem Client, also was der macht wenn in einer action einfach nichts drinn steht. Ruft er wirklich immer die Seite wieder auf auf der man sich befindet, und tun das alle Browser? Oder gibt es Spezialfälle wo man es vermeiden sollte.

              Grüße
              Jeena Paradies

              1. Hello,

                Was soll ich sagen, ich hab's grad eben mal mit PERL getestet: Es tut!
                Nun ich denke nicht dass es mit dem Server zu tun hat sondern eher mit dem Client, also was der macht wenn in einer action einfach nichts drinn steht. Ruft er wirklich immer die Seite wieder auf auf der man sich befindet, und tun das alle Browser? Oder gibt es Spezialfälle wo man es vermeiden sollte.

                action = uri [CT]
                This attribute specifies a form processing agent. User agent behavior for a value other than an HTTP URI is undefined.

                http://www.w3.org/TR/html4/interact/forms.html#h-17.3

                Wenn überhaupt, dann würde ich den Top-Anker '#' einsetzen. Da scheint das Verhalten der unterschiedlichen seit NS4.7 einheitlich zu sein. Ältere habe ich nicht mehr, vielleicht noch irgendwo einen IE 3.0 auf Win 3.11 da muss ich mal suchen.

                Harzliche Grüße aus http://www.annerschbarrich.de

                Tom

                --
                Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
                Nur selber lernen macht schlau
                1. Hello,

                  action="" verhält sich wie a href=""

                  Aber ich habs nochemal überschlafen: Besser ists, dort einen gültigen Wert reinzuschreiben - das sieht nicht nur ordentlicher aus, ist es auch ;-)

                  Gruss, Rolf

                2. Hallo,

                  action = uri [CT]
                  This attribute specifies a form processing agent. User agent behavior for a value other than an HTTP URI is undefined.
                  http://www.w3.org/TR/html4/interact/forms.html#h-17.3

                  Aha ok hm dann wohl mindestens mit # obwohl ich mich frage ob ein "" nicht auch eine gültige HTTP URI ist.

                  Grüße
                  Jeena Paradies

                  1. Hallo,

                    Aha ok hm dann wohl mindestens mit # obwohl ich mich frage ob ein "" nicht auch eine gültige HTTP URI ist.

                    Nein, ein HTTP URI muss mindestens scheme gefolgt von einem : enthalten. http://www.faqs.org/rfcs/rfc1630.html

                    BNF of Generic URI Syntax
                    uri                    scheme :  path [ ? search ]

                    scheme                 ialpha

                    ialpha                 alpha [ xalphas ]

                    alpha                  a | b | c | d | e | f | g | h | i | j | k |
                                           l | m | n | o  | p | q | r | s | t | u | v |
                                           w | x | y | z | A | B | C  | D | E | F | G |
                                           H | I | J | K | L | M | N | O | P |  Q | R |
                                           S | T | U | V | W | X | Y | Z

                    path                   void |  xpalphas  [  / path ]

                    A:    ist ein gültiger URI.

                    Es ist aber ein gültiger Eintrag bei action="".

                    http://www.w3.org/TR/html4/types.html#type-uri
                    Relative URIs are resolved to full URIs using a base URI. [RFC1808], section 3, defines the normative algorithm for this process. For more information about base URIs, please consult the section on base URIs in the chapter on links.

                    http://www.w3.org/TR/html4/struct/links.html#h-12.4.1
                    By default, the base URI is that of the current document.

                    http://www.faqs.org/rfcs/rfc1808.html
                    2.2.  BNF for Relative URLs

                    URL         = ( absoluteURL | relativeURL ) [ "#" fragment ]

                    relativeURL = net_path | abs_path | rel_path

                    rel_path    = [ path ] [ ";" params ] [ "?" query ]

                    URL ist entweder absoluteURL oder relativeURL optional gefolgt von "#" fragment.
                    Ein relativeURL ist net_path oder abs_path oder rel_path
                    Der rel_path enthält nur optionalen Inhalt, kann also leer sein.

                    Demzufolge kann relativeURL = "" sein.

                    Wenn also in einem HTML-Dokument mit dem URL "http://www.domain.tld" in einem Formular action="" angegeben wird, dann wird das gewertet wie action = (base URI) (relativeURL), also wie action="http://www.domain.tld"

                    viele Grüße

                    Axel

                    1. Hallo,

                      Demzufolge kann relativeURL = "" sein.

                      Ok das habe ich schon mal verstanden, danke.

                      Wenn also in einem HTML-Dokument mit dem URL "http://www.domain.tld" in einem Formular action="" angegeben wird, dann wird das gewertet wie action = (base URI) (relativeURL), also wie action="http://www.domain.tld"

                      Aber was ist jetzt eigentlich base URI? ist es das jeweilige Dokument (http:www.domain.tld/dokument.php) oder ist es wirklich nur http://www.domain.tld ?

                      Ach so ja, (nach dem siebten lesen) äm dort steht ja noch

                      By default, the base URI is that of the current document.

                      Also müsste es erlaubt sein und eigentlich auch überall funktionieren immer action="" zu benutzen verstehe ich das richtig?

                      Grüße
                      Jeena Paradies

                      1. Hallo,

                        Also müsste es erlaubt sein und eigentlich auch überall funktionieren immer action="" zu benutzen verstehe ich das richtig?

                        Das lese _ich_ so aus den Spezifikationen. Der HTML-Validator hat auch nichts gegen action="".

                        Aber es wird wohl einen Grund haben (eventuell unterschiedliche Reaktionen unterschiedlicher Browser in unterschiedlichen Betriebssystemen ;-))), wenn in den Beispielscripten der eigene URI im Response wieder eingetragen wird, um das Formular mehrmals von dieser Ressource bearbeiten zu lassen. Es ist ja auch wirklich kein Problem das zu tun. Hier würde ich mehr auf die Erfahrungen der Programmierer der Beispielscripte vertrauen, es also so wie im Beispiel machen, als später Schiffbruch zu erleiden.

                        viele Grüße

                        Axel

  2. hi,

    Ich überlege gerade warum man in ein Formular immer eigentlich immer
    <form method="post" action="<?php echo basename($_SERVER["PHP_SELF"]); ?>">
    also dieses basename($_SERVER["PHP_SELF"]); reinschreibt.

    Wieso macht "man" das, und auch noch "immer"? Ich habe sowas noch nie irgendwo reingeschrieben. Bei mir steht da bisher immer:
      <form method="post" action="scriptname.php">

    ;-)

    Grüße aus Berlin

    Christoph S.

    1. Moin Christoph,

      Wieso macht "man" das, und auch noch "immer"? Ich habe sowas noch nie irgendwo reingeschrieben. Bei mir steht da bisher immer:
        <form method="post" action="scriptname.php">

      Faulheit? Wenn man eine PHP Datei kopiert und modifiziert, dann muss dieser Teil nicht modifiziert werden.

      Grüsse
      Mike

      --
      Freunde kommen und gehen. Feinde sammeln sich an.
    2. Hallo,

      Wieso macht "man" das, und auch noch "immer"? Ich habe sowas noch nie irgendwo reingeschrieben. Bei mir steht da bisher immer:
        <form method="post" action="scriptname.php">
      ;-)

      Du bist ja auch schon fast ein Guru ;)

      Ich mache das weil ich dann den gleichen Code überall reinpflanzen kann ohne nachzudenken :) Bei mir gibt es sehr oft das Scenario dass das ganze Script eine Datei ist die sich immer wieder aufruft. Dabei kann sie auch verschiedene Namen haben. Es sieht schon fast wie Faulheit aus was ich da betreibe ;)

      Ich habe ja auch schon nach Gründen dagegen gesucht diese aber bisher noch nicht gefunden. Aber bevor ich wieder eine elendlange Testreihe wie diese: http://jeenaparadies.de/weblog/2004/juni/dateiendung/ mache und mich dann wahsaga dann wieder auf ein ganz anderes Problem aufmerksam macht wollte ich gleich mal reinfragen ob sich da schon jemand Gedanken machte.

      Grüße
      Jeena Paradies