vandenpit: direktes ausführen von PHP-Dtei

Hallo
Ich möchte folgendes bei einem Login erreichen:
Wenn der button 'Abbrechen' gedrückt wird, soll die Index.php aufgerufen werden

Code am Anang:
<?
  session_start();
  include("Functions.php");
  if ($_Post["go"]=="abord")
  {
    header("Location: Index.php");
  }
  if ($_Post["go"]=="ok")
  {
    if (chkUserPwd($_Post["username"],md5($_Post["password"]))==true)
    {
      $failed=false;
      $usr=$username;
      $pwd=md5($password);
      setPermissions();
      header("Location: Index.php");
    } else {
      $failed=true;
    }
  }
  include("Header.php");
...

Code im form:
<form action="Login.php" method="post">
  <table width="35%" cellpadding="0" cellspacing="3" border="0" align=center>
    <tr><td>Username:</TD><TD><input type="text" name="username"  size="20" maxlength="20"></td></tr>
    <tr><td>Password:</TD><TD><input type="password" name="password"  size="20" maxlength="20"></td></tr>
  </table>
  <input type="hidden" value="ok" name="go">
  <p align="center"><input type="submit" name="login" value=" Login "></p>
  <input type="hidden" value="abbrechen" name="go">
  <p align="center"><input type="submit" name="abbrechen" value="Abbrechen"></p>
</form>

Leider läd er mir nicht die Index.php wenn man 'Abbrechen' gedrückt hat

Danke im voraus

  1. Hi,

    if ($_Post["go"]=="abord")

    "abord" kenne ich nicht. Meinst Du "aboard" (an Bord) oder "abort" (Abbruch)?

    header("Location: Index.php");

    Der Location-Header ***MUSS*** ***ZWINGEND*** eine *absolute* URL enthalten.

    <input type="hidden" value="ok" name="go">

    [...]

    <input type="hidden" value="abbrechen" name="go">

    PHP hat einen schwerwiegenden Bug: Wenn Du mehrere Werte des selben Namens übertragen möchtest, muss dieser Name auf "[]" enden (oder ähnlich, z.B. "[foo]"). Andernfalls wird nur einer der übermittelten Werte erkannt, ich kann Dir gerade nicht auswendig sagen, welcher es ist.

    Leider läd er mir nicht die Index.php wenn man 'Abbrechen' gedrückt hat

    Du überprüfst keinen Wert, der eine entsprechende Unterscheidung ermöglichen würde.

    Cheatah

    --
    X-Self-Code: sh:( fo:} ch:~ rl:| br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. Hallo

      if ($_Post["go"]=="abord")

      "abord" kenne ich nicht. Meinst Du "aboard" (an Bord) oder "abort" (Abbruch)?

      oder Abgang (nicht der, den man bekommt, sondern der, der einem passiert (wie unappetitlich)) ;-)

      PHP hat einen schwerwiegenden Bug: Wenn Du mehrere Werte des selben Namens übertragen möchtest, muss dieser Name auf "[]" enden (oder ähnlich, z.B. "[foo]"). Andernfalls wird nur einer der übermittelten Werte erkannt, ich kann Dir gerade nicht auswendig sagen, welcher es ist.

      Es ist der letzte Wert, da beim Einlesen die anderen Werte einer nach dem anderen überschrieben werden. Das ist quasi wie bei einer Schleife, in der man einer Variable bei jedem Durchlauf immer wieder einen neuen Wert zuweist.

      $var = "";  
      for ($i=0; $i=10; $i++) {  
      $var = $i;  
      }  
      echo $var;
      

      Tschö, Auge

      --
      Die deutschen Interessen werden am Liechtenstein verteidigt.
      Veranstaltungsdatenbank Vdb 0.2
    2. Hi,

      header("Location: Index.php");

      Der Location-Header ***MUSS*** ***ZWINGEND*** eine *absolute* URL enthalten.

      in diesem speziellen Fall oder allgemein, was mir dann neu wäre?

      Tim

      1. Hallo

        header("Location: Index.php");

        Der Location-Header ***MUSS*** ***ZWINGEND*** eine *absolute* URL enthalten.

        in diesem speziellen Fall oder allgemein, was mir dann neu wäre?

        Was ist deiner Meinung nach an diesem Fall so speziell, dass er nicht mehr allgemein ist?

        RFC 2616 HTTP 1.1, Header: Location "Location = "Location" ":" absoluteURI"

        Tschö, Auge

        --
        Die deutschen Interessen werden am Liechtenstein verteidigt.
        Veranstaltungsdatenbank Vdb 0.2
        1. Hi,

          Was ist deiner Meinung nach an diesem Fall so speziell, dass er nicht mehr allgemein ist?

          eben drum.

          RFC 2616 HTTP 1.1, Header: Location "Location = "Location" ":" absoluteURI"

          Das ist krass. Denn komischerweise funktioniert das auch mit relativen Urls. Was bedeutet das nun? Sollten nun alle Programmierer die Scripts umändern, die keine komplette URL angaben haben, obwohl es funktioniert?

          Tim

          1. Komisch daran ist auch, wie viele Beispielscripts im Mnaul zu finden ist, die eben auch keine absolute URL nutzen.

            http://nl2.php.net/manual/de/function.header.php#87970

            Tim

            1. Moin!

              Komisch daran ist auch, wie viele Beispielscripts im Mnaul zu finden ist, die eben auch keine absolute URL nutzen.

              http://nl2.php.net/manual/de/function.header.php#87970

              Wie du siehst, haben auch existierende Browser mit manchen relativen URL-Angaben ein Problem. Es ist also kein nur theoretisches Problem, sondern höchst real in der Praxis relevant.

              - Sven Rautenberg

              1. Hi,

                http://nl2.php.net/manual/de/function.header.php#87970

                Wie du siehst, haben auch existierende Browser mit manchen relativen URL-Angaben ein Problem. Es ist also kein nur theoretisches Problem, sondern höchst real in der Praxis relevant.

                nein sehe ich nicht, wo steht das?

                Tim

                1. Hi,

                  Wie du siehst, haben auch existierende Browser mit manchen relativen URL-Angaben ein Problem. Es ist also kein nur theoretisches Problem, sondern höchst real in der Praxis relevant.

                  nein sehe ich nicht, wo steht das?

                  In dem Nutzerkommentar an der genau der Stelle, auf die Svens Link verweist.

                  MfG ChrisB

                  --
                  „This is the author's opinion, not necessarily that of Starbucks.“
                  1. Hi,

                    In dem Nutzerkommentar an der genau der Stelle, auf die Svens Link verweist.

                    eigentlich stammt der Link von mir selbst und dort sehe ich das nicht:

                    ----------------------------------
                    If using header in Safari, make sure you use complete pahge names.  For example, we were using

                    <?php
                    header("Location: ?mng=" . $_GET['mng']);
                    ?>

                    but it didnt work in Safari so we are using this

                    <?php
                    header("Location: index.php?mng=" . $_GET['mng']);
                    ?>

                    ---------------------------

                    Denn "Location: index.php?mng=......" ic ja auch keine absolute url, oder?

                    Tim

                    1. Hi,

                      eigentlich stammt der Link von mir selbst und dort sehe ich das nicht:

                      Da siehst du genau das, was Sven sagte - das auch real existierende Browser mit *manchen* relativen URL-Angaben Probleme haben.

                      Denn "Location: index.php?mng=......" ic ja auch keine absolute url, oder?

                      Dass die dortige "Loesung" immer noch falsch ist, ist was anderes.

                      MfG ChrisB

                      --
                      „This is the author's opinion, not necessarily that of Starbucks.“
                      1. Hi,

                        Da siehst du genau das, was Sven sagte - das auch real existierende Browser mit *manchen* relativen URL-Angaben Probleme haben.

                        na ja hier geht es um das weglassen eines Daiteinamens, was auch bei relativen Links ein Problem im jeweiligen Browser darstellt.

                        Denn "Location: index.php?mng=......" ic ja auch keine absolute url, oder?

                        Dass die dortige "Loesung" immer noch falsch ist, ist was anderes.

                        Das ist aber für mich genau das kuriose daran.
                        Im Manual wird nicht jeder Muell erlaubt, die löschen rigeros unsinnige Scriplets oder kritisieren sie direkt.

                        Da das aber im Manual nicht der Fall ist, siehe auch anderes Beispiel, denke die bewerten das nicht unbedingt so extrem wie Cheatah:

                        Der Location-Header ***MUSS*** ***ZWINGEND*** eine *absolute* URL enthalten.

                        Und wenn die das nicht so eng sehen, scheint es auch nicht wirklich notwendig zu sein, alte Kunden zu kontaktieren, das man nochmal einige Scripte anpassen müsste. Obwohl, sich ins Gedächtnis zu rufen, könnte ja wieder Aufträge bringen, von daher..., aber eigentlich eher nicht wenn der Kunde denkt du hast früher Mist gebaut;-)

                        Tim

                        1. Hi,

                          Da siehst du genau das, was Sven sagte - das auch real existierende Browser mit *manchen* relativen URL-Angaben Probleme haben.

                          na ja hier geht es um das weglassen eines Daiteinamens, was auch bei relativen Links ein Problem im jeweiligen Browser darstellt.

                          Tut es? Ist mir nicht bekannt.

                          Und wenn die das nicht so eng sehen, scheint es auch nicht wirklich notwendig zu sein, alte Kunden zu kontaktieren, das man nochmal einige Scripte anpassen müsste.

                          Die Forderung nach einem absoluten URL als Wert eines Location-Headers stellt HTTP, nicht PHP.
                          Und daraus, wie genau oder "streng" die PHP-Macher diesbezueglich bei Beispielen und Kommentaren in ihrem Manual sind, irgendwelche Schluesse ziehen zu wollen, ist unsinnig.

                          MfG ChrisB

                          --
                          „This is the author's opinion, not necessarily that of Starbucks.“
                        2. Hi,

                          Im Manual wird nicht jeder Muell erlaubt, die löschen rigeros unsinnige Scriplets oder kritisieren sie direkt.

                          das PHP-Manual ist voll von Müll. Eine große Menge davon ist Teil von PHP.

                          Da das aber im Manual nicht der Fall ist, siehe auch anderes Beispiel, denke die bewerten das nicht unbedingt so extrem wie Cheatah:

                          Der Location-Header ***MUSS*** ***ZWINGEND*** eine *absolute* URL enthalten.

                          RFC 2616 lässt überhaupt nicht den Schluss zu, eine relative URI könne in irgend einer Form erlaubt oder sinnvoll sein:

                          14.30 Location
                          [...] The field value consists of a single absolute URI.
                          Location       = "Location" ":" absoluteURI
                          [...]

                          Und wenn die das nicht so eng sehen, scheint es auch nicht wirklich notwendig zu sein, alte Kunden zu kontaktieren, das man nochmal einige Scripte anpassen müsste.

                          Nein, man kann auch abwarten, bis jemand Regressansprüche geltend macht.

                          aber eigentlich eher nicht wenn der Kunde denkt du hast früher Mist gebaut;-)

                          Das ist eine Frage der Formulierung ;-)

                          Cheatah

                          --
                          X-Self-Code: sh:( fo:} ch:~ rl:| br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
                          X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
                          X-Will-Answer-Email: No
                          X-Please-Search-Archive-First: Absolutely Yes
          2. Hi there,

            Sollten nun alle Programmierer die Scripts umändern, die keine komplette URL angaben haben, obwohl es funktioniert?

            Nein, das lohnt der Mühe nicht. Der Sinn der Sache ist aber der, daß man, wenn es weiss, berücksichtigen sollte, denn es kann ja sein, daß zukünftige PHP-Interpreter/Compiler relative URLs nicht mehr so interpretieren, wie sie es derzeit tun. Das ist zwar extrem unwahrscheinlich und eine Religion sollte man auch nicht draus machen, aber andereseits kostet es ja nicht wirklich viel...

            1. Hallo

              Sollten nun alle Programmierer die Scripts umändern, die keine komplette URL angaben haben, obwohl es funktioniert?

              Nein, das lohnt der Mühe nicht. Der Sinn der Sache ist aber der, daß man, wenn es weiss, berücksichtigen sollte, denn es kann ja sein, daß zukünftige PHP-Interpreter/Compiler relative URLs nicht mehr so interpretieren, wie sie es derzeit tun. Das ist zwar extrem unwahrscheinlich und eine Religion sollte man auch nicht draus machen, aber andereseits kostet es ja nicht wirklich viel...

              Was hat PHP damit zu tun, außer dass es einen Header senden kann? Wenn du meinst, dass es Religion wäre, seine Skripte mit einem banalen Suchlauf zu überprüfen und im Bedarfsfall zu ändern, solltest es auch du sein, der hier etwaige Fragen zu diesem Thema beantwortet, wenn jemand daherkommt und eben nicht einen der Clients/Browser benutzt, die relative URLs auswerten, womit der Befehl im Skript nicht tut, was er soll.

              Tschö, Auge

              --
              Die deutschen Interessen werden am Liechtenstein verteidigt.
              Veranstaltungsdatenbank Vdb 0.2
              1. Hi there,

                Was hat PHP damit zu tun, außer dass es einen Header senden kann?

                Ja, ist ein Browserproblem, war schon etwas angeschlagen.

                Wenn du meinst, dass es Religion wäre, seine Skripte mit einem banalen Suchlauf zu überprüfen und im Bedarfsfall zu ändern, solltest es auch du sein, der hier etwaige Fragen zu diesem Thema beantwortet, wenn jemand daherkommt und eben nicht einen der Clients/Browser benutzt, die relative URLs auswerten, womit der Befehl im Skript nicht tut, was er soll.

                Den Satz nicht ich verstehe, aber mein Browser tut.

                1. Hallo

                  Wenn du meinst, dass es Religion wäre, seine Skripte mit einem banalen Suchlauf zu überprüfen und im Bedarfsfall zu ändern, solltest es auch du sein, der hier etwaige Fragen zu diesem Thema beantwortet, wenn jemand daherkommt und eben nicht einen der Clients/Browser benutzt, die relative URLs auswerten, womit der Befehl im Skript nicht tut, was er soll.

                  Den Satz nicht ich verstehe, aber mein Browser tut.

                  Wen außer dich interessiert dein Browser? Richtig: niemanden, weil alle außer dir einen anderen verwenden könnten. Bei dir (und vielen anderen) funktioniert es, eine relative URL im Location-Header zu verwenden, weil dein und deren Clients in dieser Hinsicht fehlertolerant sind.

                  Andere haben dieses "Glück" nicht, weil deren Clients die nicht regelgerechte Angabe *nicht* tolerieren.

                  Was ist nun einfacher *und* sinnvoller? Ändere ich den Code so, dass er überall funktioniert[1] oder nehme ich ohne Not hin, dass die Anwendung dies eben nicht tut oder weise ich den evtl. verwirrten, nachfragenden Benutzer gar darauf hin, einen anderen Clienten zu benutzen, der meinen[2] *Fehler* ignoriert?

                  [1] Und das ist *nicht* übermäßig aufwendig.
                  [2] "meinen" aus Sicht des Entwicklers.

                  Tschö, Auge

                  --
                  Die deutschen Interessen werden am Liechtenstein verteidigt.
                  Veranstaltungsdatenbank Vdb 0.2
                  1. Hi there,

                    Wen außer dich interessiert dein Browser? Richtig: niemanden, weil alle außer dir einen anderen verwenden könnten.

                    ich schätze Exklusivität, aber man kann es auch übertreiben ;)

                    Bei dir (und vielen anderen) funktioniert es, eine relative URL im Location-Header zu verwenden, weil dein und deren Clients in dieser Hinsicht fehlertolerant sind.

                    Bei mir und 99.9999% der anderen.

                    Andere haben dieses "Glück" nicht, weil deren Clients die nicht regelgerechte Angabe *nicht* tolerieren.

                    Nenne Name und Adresse;)

                    Was ist nun einfacher *und* sinnvoller? Ändere ich den Code so, dass er überall funktioniert[1] oder nehme ich ohne Not hin, dass die Anwendung dies eben nicht tut oder weise ich den evtl. verwirrten, nachfragenden Benutzer gar darauf hin, einen anderen Clienten zu benutzen, der meinen[2] *Fehler* ignoriert?

                    Du rennst bei mir damit ohnehin offene Türen ein. Nur das *nachträgliche* Ändern bezahlt keiner, und damit ist es betriebswirtschaftlich nicht sinnvoll. Sobald auch nur ein Kunde käme und sich beschwerte, ok, aber ich denke, daß wird so in der Form eher sehr selten der Fall sein. Und aus Prinzip etwas im Nachhinein zu ändern, das ist imho nicht sinnvoll, daher auch mein Religionsvorwurf...

                    1. Hallo

                      ... weil alle außer dir einen anderen verwenden könnten.

                      ich schätze Exklusivität, aber man kann es auch übertreiben ;)

                      Deswegen: "könnten"

                      Bei dir (und vielen anderen) funktioniert es, eine relative URL im Location-Header zu verwenden, weil dein und deren Clients in dieser Hinsicht fehlertolerant sind.

                      Bei mir und 99.9999% der anderen.

                      Gewagt, eine solch absolute Aussage. Wo hast du die Zahl her? ;-)

                      ... das *nachträgliche* Ändern bezahlt keiner, und damit ist es betriebswirtschaftlich nicht sinnvoll. Sobald auch nur ein Kunde käme und sich beschwerte, ok, aber ich denke, daß wird so in der Form eher sehr selten der Fall sein. Und aus Prinzip etwas im Nachhinein zu ändern, das ist imho nicht sinnvoll, daher auch mein Religionsvorwurf...

                      Mag sein. Wird aber sowieso ein Update (aus welchen Gründen auch immer) fällig, sollten erkannte "marginale" Fehler gleich mit behoben werden.

                      Tschö, Auge

                      --
                      Die deutschen Interessen werden am Liechtenstein verteidigt.
                      Veranstaltungsdatenbank Vdb 0.2
          3. Hi,

            Das ist krass. Denn komischerweise funktioniert das auch mit relativen Urls.

            nein, es funktioniert nicht, sondern "funzt" nur. Das liegt daran, dass Du das ganze ausschließlich mit einigen wenigen Vertretern einer einzigen Gruppe von Clients getestet hast, nämlich Browsern.

            Was bedeutet das nun? Sollten nun alle Programmierer die Scripts umändern, die keine komplette URL angaben haben, obwohl es funktioniert?

            Niemand kann sagen, ob es funktioniert, solange es der Spezifikation widerspricht. Zu diesem Zweck gibt es nämlich Spezifikationen.

            Cheatah

            --
            X-Self-Code: sh:( fo:} ch:~ rl:| br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
            X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
            X-Will-Answer-Email: No
            X-Please-Search-Archive-First: Absolutely Yes
    3. Guten Tag,

      PHP hat einen schwerwiegenden Bug: Wenn Du mehrere Werte des selben Namens
      übertragen möchtest, muss dieser Name auf "[]" enden (oder ähnlich, z.B.
      "[foo]").

      Das ist kein Bug, sondern im Manual spezifiziertes verhalten.

      Andernfalls wird nur einer der übermittelten Werte erkannt, ich
      kann Dir gerade nicht auswendig sagen, welcher es ist.

      Der letzte übermittelte Wert:

      <?php  
      var_dump($_POST);  
      ?>  
        
      <form method=post>  
      <input type=text value=Eins name=pvar />  
      <input type=text value=Zwei name=pvar />  
      <input type=submit />  
      </form>
      

      Liefert "Zwei2 zurück.

      Gruß
      Christoph Jeschke

      --
      Zend Certified Engineer
      Certified Urchin Admin
      1. Hi,

        PHP hat einen schwerwiegenden Bug: Wenn Du mehrere Werte des selben Namens
        übertragen möchtest, muss dieser Name auf "[]" enden (oder ähnlich, z.B.
        "[foo]").
        Das ist kein Bug, sondern im Manual spezifiziertes verhalten.

        ein dokumentierter Bug ist immer noch ein Bug. Welches Recht sollte eine einseitige (nämlich serverseitige) Technik haben, die Spezifikation der Schnittstelle vorzugeben?

        Andernfalls wird nur einer der übermittelten Werte erkannt, ich
        kann Dir gerade nicht auswendig sagen, welcher es ist.
        Der letzte übermittelte Wert:

        Jepp, danke schön.

        <input type=text value=Eins name=pvar />

        *hüstel* Also, entweder XHTML, dann mit Quotes um die Attributwerte, oder HTML, dann ohne "/" am Ende ;-)

        Cheatah

        --
        X-Self-Code: sh:( fo:} ch:~ rl:| br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
        X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
        X-Will-Answer-Email: No
        X-Please-Search-Archive-First: Absolutely Yes
        1. Hi,

          Andernfalls wird nur einer der übermittelten Werte erkannt, ich
          kann Dir gerade nicht auswendig sagen, welcher es ist.
          Der letzte übermittelte Wert:

          Jepp, danke schön.

          Wobei zwar bei allen mir bekannten Browsern die Reihenfolge der übertragenen Parametern mit der Reihenfolge der entsprechenden form controls im HTML entspricht, aber diese Reihenfolge ist m.W. nicht spezifiziert.
          http://www.w3.org/TR/html4/interact/forms.html#h-17.13 nennt keine Reihenfolge.

          cu,
          Andreas

          --
          Warum nennt sich Andreas hier MudGuard?
          O o ostern ...
          Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
        2. Guten Tag,

          ein dokumentierter Bug ist immer noch ein Bug. Welches Recht sollte eine
          einseitige (nämlich serverseitige) Technik haben, die Spezifikation der
          Schnittstelle vorzugeben?

          Das Recht, nicht zu funktionieren, wenn die Spezifikation nicht eingehalten wird.

          *hüstel* Also, entweder XHTML, dann mit Quotes um die Attributwerte, oder
          HTML, dann ohne "/" am Ende ;-)

          Ich war in Eile.

          Gruß
          Christoph Jeschke

          --
          Zend Certified Engineer
          Certified Urchin Admin