meinkonto1100: HTTP_GET_VARS in Frameset

Hallo!
kann man Variablen an Seiten in Framesets übergeben, weil bei mir geht das irgendwie nicht.
Die Variable lese ich dann mit HTTP_GET_VARS[...] aus.

ungefähr so:

index.php

  
<?php  
$var = "text";  
?>  
<html>  
  <head>  
  </head>  
  
  <frameset...>  
    <frame src="index2.php?var=<? echo $var; ?>"...>  
    ...  
  </frameset>  
  
  <body>  
  </body>  
</html>  

index2.php

  
<?php  
$var = $HTTP_GET_VARS['var'];  
echo $var;  
?>  

  1. Hi,

    kann man Variablen an Seiten in Framesets übergeben,

    nein, über HTTP kann man Variablen überhaupt nicht übergeben. Nur Parameter.

    Die Variable lese ich dann mit HTTP_GET_VARS[...] aus.

    Warum nimmst Du etwas dermaßen Veraltetes? Naja okay, Du setzt ja auch Frames ein, da muss man mit allem rechnen. Trotzdem solltest Du entweder auf das seit anno 2001(!) definierte $_GET zurückgreifen, oder aber zumindest sicher stellen, dass Deine PHP-Version $HTTP_GET_VARS noch kennt.

    Warum setzt Du eigentlich Frames ein?

    <frame src="index2.php?var=<? echo $var; ?>"...>

    Dein Server ist so eingestellt, dass er die Kurzschreibweise "<? ... ?>" auch tatsächlich unterstützt? Wenn ja, warum?

    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,

      kann man Variablen an Seiten in Framesets übergeben,

      nein, über HTTP kann man Variablen überhaupt nicht übergeben. Nur Parameter.

      mein ich ja ^^

      Die Variable lese ich dann mit HTTP_GET_VARS[...] aus.

      Warum nimmst Du etwas dermaßen Veraltetes? Naja okay, Du setzt ja auch Frames ein, da muss man mit allem rechnen. Trotzdem solltest Du entweder auf das seit anno 2001(!) definierte $_GET zurückgreifen, oder aber zumindest sicher stellen, dass Deine PHP-Version $HTTP_GET_VARS noch kennt.

      ja das mit HTTP_GET_VARS funktioniert!

      Warum setzt Du eigentlich Frames ein?

      »»
      und das mit den frames hab ich irgenwann mal gemacht ich wollte das auch noch ändern ;)

      <frame src="index2.php?var=<? echo $var; ?>"...>

      Dein Server ist so eingestellt, dass er die Kurzschreibweise "<? ... ?>" auch tatsächlich unterstützt? Wenn ja, warum?

      ja das geht, ich weis nicht warum, das war schon so :)

      Cheatah

    2. Hi!

      Dein Server ist so eingestellt, dass er die Kurzschreibweise "<? ... ?>" auch tatsächlich unterstützt? Wenn ja, warum?

      Warum nicht? Nur weil es ein Problem mit dem XML-Prolog gibt, den man normalerweise gar nicht einsetzen will? Die Kurzschreibweise ist weder deprecated, noch ist geplant, sie abschaffen zu wollen. Wenn der Server sie unterstützt, gibt es keinen wirklichen Grund, darauf zu verzichten. Und ob jemand seine Scripte so schreiben will, dass sie auch auf short_open_tag=off-Servern, ist kein generelles Thema sondern eine individuelle Entscheidung.

      Natürlich kann man auch schauen, ob sie unterstützt werden, was bei den meisten Hostern der Fall sein dürfte, wenn sie sich unnötige Supportanfragen vom Hals halten wollen. Als viel wichtiger sehe ich es an, zu überprüfen, ob das was man vorhat auch eintritt, also mal einen Blick in den erzeugten HTML-Code zu werfen, ob der so wie vorgesehen aussieht.

      [...] oder aber zumindest sicher stellen, dass Deine PHP-Version $HTTP_GET_VARS noch kennt.

      Das allerdings ist kein guter Vorschlag, denn diese Langschreibweise steht definitiv auf der Abschussliste.

      Lo!

      1. [...] oder aber zumindest sicher stellen, dass Deine PHP-Version $HTTP_GET_VARS noch kennt.

        Das allerdings ist kein guter Vorschlag, denn diese Langschreibweise steht definitiv auf der Abschussliste.

        Gibts da ne andere Funktion?
        Ich kenne nur die (ich kenn mich in PHP kaum aus)

        1. Hi!

          [...] oder aber zumindest sicher stellen, dass Deine PHP-Version $HTTP_GET_VARS noch kennt.
          Das allerdings ist kein guter Vorschlag, denn diese Langschreibweise steht definitiv auf der Abschussliste.
          Gibts da ne andere Funktion?
          Ich kenne nur die (ich kenn mich in PHP kaum aus)

          Mit welchen uralten Tutorial hast du denn gelernt? $_GET und $_POST sind die Schreibweisen der beiden wichtigsten vordefinierten Variablen.

          Außerdem ist es keine gute Idee, Variableninhalte einfach so auszugeben. Jeder Kontext hat seine eigenen Regeln, deren Nichtbeachtung Konsequenzen zwischen einfachem Fehler und gravierendem Sicherheitsproblem liegen. Das ist kein einfaches Thema, deswegen gibts zum Kontextwechsel einen langen Artikel. In deinem Fall willst du Daten in eine URL einbetten und die wiederum in HTML.

          Lo!

          1. Mit welchen uralten Tutorial hast du denn gelernt? $_GET und $_POST sind die Schreibweisen der beiden wichtigsten vordefinierten Variablen.

            Ich brauchte halt nur das und dann hab ich gegooglet und nen paar sachen sind auch irgendwie c++ ähnlich und das kann ich :)

            Außerdem ist es keine gute Idee, Variableninhalte einfach so auszugeben. Jeder Kontext hat seine eigenen Regeln, deren Nichtbeachtung Konsequenzen zwischen einfachem Fehler und gravierendem Sicherheitsproblem liegen. Das ist kein einfaches Thema, deswegen gibts zum Kontextwechsel einen langen Artikel. In deinem Fall willst du Daten in eine URL einbetten und die wiederum in HTML.

            Was meinst du damit jetz?
            Sicherheit ist mir eigentlich nicht so wichtig und es funktioniert auch so wie ichs mache

            Lo!

            1. Sicherheit ist mir eigentlich nicht so wichtig und es funktioniert auch so wie ichs mache

              Dann nenne doch mal bitte den Link zu deinem Projekt. Es ist Freitag Abend, ich will Spass haben ;-)

              1. Sicherheit ist mir eigentlich nicht so wichtig und es funktioniert auch so wie ichs mache

                Dann nenne doch mal bitte den Link zu deinem Projekt. Es ist Freitag Abend, ich will Spass haben ;-)

                ist momentan eh offline :)

              2. Sicherheit ist mir eigentlich nicht so wichtig und es funktioniert auch so wie ichs mache

                Dann nenne doch mal bitte den Link zu deinem Projekt. Es ist Freitag Abend, ich will Spass haben ;-)

                jetz iust samstag xDD
                http://www.apps-programme.de/

                und jetz nicht aufregen oder so dass ich das mit frames gemacht habe ;)

                1. Hallo

                  Dann nenne doch mal bitte den Link zu deinem Projekt. Es ist Freitag Abend, ich will Spass haben ;-)

                  jetz iust samstag xDD
                  http://www.apps-programme.de/

                  und jetz nicht aufregen oder so dass ich das mit frames gemacht habe ;)

                  Ok, dann rege ich mich ersatzweise darüber auf, dass ich ungefragt per JavaScript umgeleitet werden soll (was naturgemäß nicht immer funktioniert). Besser?

                  Tschö, Auge

                  --
                  Verschiedene Glocken läuteten in der Stadt, und jede von ihnen vertrat eine ganz persönliche Meinung darüber, wann es Mitternacht war.
                  Terry Pratchett, "Wachen! Wachen!"
                  Veranstaltungsdatenbank Vdb 0.3
                  1. Ok, dann rege ich mich ersatzweise darüber auf, dass ich ungefragt per JavaScript umgeleitet werden soll (was naturgemäß nicht immer funktioniert). Besser?

                    ok. das kann ich verstehen ;)

                  2. Ok, dann rege ich mich ersatzweise darüber auf, dass ich ungefragt per JavaScript umgeleitet werden soll (was naturgemäß nicht immer funktioniert). Besser?

                    aber Adobe geht ja auch davon aus das man Flash hat
                    genau so wie ich davon ausgehe bzw. haben will ;) dass man JavaScript aktiviert hat ;)

                    1. Hallo

                      Ok, dann rege ich mich ersatzweise darüber auf, dass ich ungefragt per JavaScript umgeleitet werden soll (was naturgemäß nicht immer funktioniert). Besser?
                      aber Adobe geht ja auch davon aus das man Flash hat
                      genau so wie ich davon ausgehe bzw. haben will ;) dass man JavaScript aktiviert hat ;)

                      Kannst du ja halten, wie du willst. Für den Fall, dass du willst, dass jedermann, der sich für deine Seite interessiert, auch darauf Zugriff hat, solltest du aber deine Einstellung überdenken. Du kannst als Autor haben wollen, was du willst, im Webbereich ist *genau das* meistens nicht wichtig.

                      Tschö, Auge

                      --
                      Verschiedene Glocken läuteten in der Stadt, und jede von ihnen vertrat eine ganz persönliche Meinung darüber, wann es Mitternacht war.
                      Terry Pratchett, "Wachen! Wachen!"
                      Veranstaltungsdatenbank Vdb 0.3
                      1. Kannst du ja halten, wie du willst. Für den Fall, dass du willst, dass jedermann, der sich für deine Seite interessiert, auch darauf Zugriff hat, solltest du aber deine Einstellung überdenken. Du kannst als Autor haben wollen, was du willst, im Webbereich ist *genau das* meistens nicht wichtig.

                        kann mir denn dann einer sagen wie man das mit php z.B. header('location:...'); macht?
                        ich hatte das nämlich irgendwann mal probiert aber es ging irgendwie nur mit EINER variable. wenn ich mehrere benutzt hab gab es irgendeine fehlermeldung
                        warscheinlich hab ichs falsch gemacht O_o

                        1. Hallo

                          kann mir denn dann einer sagen wie man das mit php z.B. header('location:...'); macht?

                          header('location: http://www.example.com/pfad/zum/ziel.html');

                          ich hatte das nämlich irgendwann mal probiert aber es ging irgendwie nur mit EINER variable. wenn ich mehrere benutzt hab gab es irgendeine fehlermeldung

                          Was meinst du damit?

                          warscheinlich hab ichs falsch gemacht O_o

                          Zu beachten ist:
                          1. Es ist eine vollständige URL (mit Protokoll, Domainnamen, pipapo) anzugeben (hatten wir ja schon).
                          2. Der Header hat unbedingt *vor* jeglicher Ausgabe an den Browser gesendet zu werden!

                          Genau *da* vermute ich deine Fehlermeldung (a lá: "Headers already sent ..."). "Ausgabe" bedeutet nicht nur, HTML-Teile, sondern auch jegliche andere Zeichen (z.B. Leerzeichen, Zeilenumbrüche etc. pp.). Du kannst aber innerhalb eines PHP-Blocks vor dem Senden des Headers irgendwelche Berechnungen ausführen oder Entscheidungen fällen. Es darf dabei nur zu keiner Ausgabe kommen.

                          [code lang=php]<?php  
                            
                          if ($_POST['bla'] == 'irgendwas') {  
                          // nache irgendwas  
                          $url = 'http://www.example.com/aufruf.php';  
                          } if else ($_POST['bla'] == 'was anderes') {  
                          // mache was anderes  
                          $url = 'http://www.example.net/beispiel.html';  
                          } else {  
                          // nache etwas ganz anderes, ohne umzuleiten  
                          }  
                            
                          if (isset($url)) {  
                          header('location: '.$url);  
                          }  
                            
                          ?>
                          ~~~<DOCTYPE ...>  
                          <head>  
                          <!-- Rest der HTML-Ausgabe -->[/code]  
                            
                          Tschö, Auge  
                          
                          -- 
                          Verschiedene Glocken läuteten in der Stadt, und jede von ihnen vertrat eine ganz persönliche Meinung darüber, wann es Mitternacht war.  
                          Terry Pratchett, "Wachen! Wachen!"  
                            
                          [Veranstaltungsdatenbank Vdb 0.3](http://termindbase.auge8472.de/)
                          
                          1. ich hatte das nämlich irgendwann mal probiert aber es ging irgendwie nur mit EINER variable. wenn ich mehrere benutzt hab gab es irgendeine fehlermeldung

                            Was meinst du damit?

                            egal funktioniert ja jetzt.
                            so:
                            http://www.apps-programme.de/

                            jetzt auch ohne javascript weiterleitung ;)

            2. Hi!

              Außerdem ist es keine gute Idee, Variableninhalte einfach so auszugeben. Jeder Kontext hat seine eigenen Regeln, deren Nichtbeachtung Konsequenzen zwischen einfachem Fehler und gravierendem Sicherheitsproblem liegen. Das ist kein einfaches Thema, deswegen gibts zum Kontextwechsel einen langen Artikel. In deinem Fall willst du Daten in eine URL einbetten und die wiederum in HTML.

              Was meinst du damit jetz?
              Sicherheit ist mir eigentlich nicht so wichtig und es funktioniert auch so wie ichs mache

              Ja, das ist das Problem an Sicherheitslücken. Man sieht nur das eigentliche Ziel, das "wunderbar funktioniert", und übersieht dabei, dass die Implementation im Prinzip fehlerhaft ist, weil sie noch jede Menge andere Dinge ermöglicht, die man nicht haben will, weil damit die eigenen Daten und die Sicherheit der Anderen gefährdet sind. Dabei ist es meist nur ein kleiner zusätzlicher Schritt und würde viel Aufwand bei der Schadensbeseitigung sparen.

              Lo!

              1. Ja, das ist das Problem an Sicherheitslücken. Man sieht nur das eigentliche Ziel, das "wunderbar funktioniert", und übersieht dabei, dass die Implementation im Prinzip fehlerhaft ist, weil sie noch jede Menge andere Dinge ermöglicht, die man nicht haben will, weil damit die eigenen Daten und die Sicherheit der Anderen gefährdet sind. Dabei ist es meist nur ein kleiner zusätzlicher Schritt und würde viel Aufwand bei der Schadensbeseitigung sparen.

                Lo!

                was ist denn das Problem?

                1. Hi!

                  was ist denn das Problem?

                  Ich denke, die Beispiele in meinem verlinkten Artikel verdeutlichen das Problem prinzipiell. Ansonsten hört das Problem in deinem Fall auf den Namen XSS (Cross Site Scripting). Im Datenbankumfeld beispielsweise nennt es sich SQL-Injection.

                  HTML verlangt, dass unter anderem ein < als &lt; geschrieben wird, damit es nicht als Tag-Beginn erkannt wird. Wenn du es zulässt, dass ein übergebenes < genau so in deinem HTML-Code landet, steht auch einem <script ... nichts im Wege. Das ermöglicht, dass Anwender über diese deine Lücke und etwas darüber eingeschleustes Javascript zum Beispiel auf Seiten mit für sie potentiell schädlichem Inhalt umgeleitet werden können.

                  Das Problem ist ungefähr so, als ob du eine Tür (mit Klinke auf beiden Seiten) unabgeschlossen lässt. Du kannst mit einfacher Klinkenbetätigung bequem hindurchgehen - somit funktioniert sie ja aus deiner Sicht wie gewünscht. Das potentiell Problematische daran erkennst du sicher selbst.

                  Lo!

                  1. Hi!

                    was ist denn das Problem?

                    Ich denke, die Beispiele in meinem verlinkten Artikel verdeutlichen das Problem prinzipiell. Ansonsten hört das Problem in deinem Fall auf den Namen XSS (Cross Site Scripting). Im Datenbankumfeld beispielsweise nennt es sich SQL-Injection.

                    HTML verlangt, dass unter anderem ein < als &lt; geschrieben wird, damit es nicht als Tag-Beginn erkannt wird. Wenn du es zulässt, dass ein übergebenes < genau so in deinem HTML-Code landet, steht auch einem <script ... nichts im Wege. Das ermöglicht, dass Anwender über diese deine Lücke und etwas darüber eingeschleustes Javascript zum Beispiel auf Seiten mit für sie potentiell schädlichem Inhalt umgeleitet werden können.

                    Das Problem ist ungefähr so, als ob du eine Tür (mit Klinke auf beiden Seiten) unabgeschlossen lässt. Du kannst mit einfacher Klinkenbetätigung bequem hindurchgehen - somit funktioniert sie ja aus deiner Sicht wie gewünscht. Das potentiell Problematische daran erkennst du sicher selbst.

                    Lo!

                    jo.
                    ich prüfe mit php eigentlich nur ob z.B. $page nicht eingegeben wurde und wenn doch wird mit $page und noch nen '.php' daran diese seite aufgerufen

                    $pg = $_GET["page"];
                    if($pg != "")
                      header('location: ',$pg);
                    else
                      header('location: index1.php');

                    oder so ähnlich

                    1. Hi!

                      ich prüfe mit php eigentlich nur ob z.B. $page nicht eingegeben wurde und wenn doch wird mit $page und noch nen '.php' daran diese seite aufgerufen

                      $pg = $_GET["page"];
                      if($pg != "")
                        header('location: ',$pg);
                      else
                        header('location: index1.php');

                      Eine sehr "schöne" Lücke ist das, denn damit kann man sonstwohin springen lassen. Zum einen ist es nicht notwendig, $_GET["page"] nach $pg umzukopieren. Zum anderen wäre es sinnvoll, vor dem Springen das in $_GET["page"] übergebene gegen eine Liste erlaubter Werte zu prüfen. Obendrein verlangt die Spezifikation, dass beim Location-Header eine vollständige URL anzugeben sei.

                      // Liste erlaubter Sprungziele  
                      $destinations = array('foo', 'bar', 'qux', 'index1');  
                      if (!isset($_GET["page"]) or !in_array($_GET["page"], $destinations))  
                        // wenn nicht vorhanden oder nicht erlaubter Wert, dann zwangsweise zur index1 springen  
                        $_GET["page"] = 'index1';  
                        
                      header('Location: http://' . $_SERVER['SERVER_NAME'] . '/' . $_GET["page"] . '.php');
                      

                      Lo!

                      1. Eine sehr "schöne" Lücke ist das, denn damit kann man sonstwohin springen lassen. Zum einen ist es nicht notwendig, $_GET["page"] nach $pg umzukopieren.

                        mach ich aber ;)
                        »»Zum anderen wäre es sinnvoll, vor dem Springen das in $_GET["page"] übergebene gegen eine Liste erlaubter Werte zu prüfen. Obendrein verlangt die Spezifikation, dass beim Location-Header eine vollständige URL anzugeben sei.

                        ich habe bis jetzt keine seiten die da nicht benutzt werden sollen.
                        und wer so doof ist und da 'index eingibt' .....

                        und wieso sollte ich eine komplette URL eingeben wenns auch ohne geht?!?

                        1. Hallo,

                          Eine sehr "schöne" Lücke ist das, denn damit kann man sonstwohin springen lassen. Zum einen ist es nicht notwendig, $_GET["page"] nach $pg umzukopieren.
                          mach ich aber ;)

                          und wozu? Jede neue Variable braucht Speicherplatz. Aber das ist nicht entscheidend.
                          Viel gravierender ist: Durch das Umkopieren wird die Herkunft der Daten verschleiert. Wenn $_GET['var'] in einem Ausdruck auftaucht, sieht man sofort: Aha, Benutzereingabe - aufpassen, nicht vertrauenswürdig. Einer Variablen wie $page sieht man das nicht mehr an.

                          Zum anderen wäre es sinnvoll, vor dem Springen das in $_GET["page"] übergebene gegen eine Liste erlaubter Werte zu prüfen.
                          ich habe bis jetzt keine seiten die da nicht benutzt werden sollen.

                          Es wäre dir also auch egal, wenn ein Scherzkeks sich durch /?page=http%3A%2F%2Fwww%2Egoogle%2Ecom%2F zu Google weiterleiten lässt. Gut, kann dir in diesem Fall auch egal sein, aber das Prinzip lässt sich auf andere Szenarien übertragen, in denen sowas vielleicht weh tut. Daher: Machlässigkeit gar nicht erst angewöhnen.

                          Obendrein verlangt die Spezifikation, dass beim Location-Header eine vollständige URL anzugeben sei.
                          und wieso sollte ich eine komplette URL eingeben wenns auch ohne geht?!?

                          Weil's die Spezifikation vorschreibt, und weil das Argument "wenns auch ohne geht" irgendwo zwischen Zufall und browserseitiger Fehlertoleranz dümpelt. Schon mit der nächsten Browserversion *könnte* es nicht mehr funktionieren, weil es nicht funktionieren *muss*.

                          Ciao,
                           Martin

                          --
                          Time's an illusion. Lunchtime doubly so.
                            (Douglas Adams, "The Hitchhiker's Guide To The Galaxy")
                          1. Hallo,

                            Eine sehr "schöne" Lücke ist das, denn damit kann man sonstwohin springen lassen. Zum einen ist es nicht notwendig, $_GET["page"] nach $pg umzukopieren.
                            mach ich aber ;)

                            und wozu? Jede neue Variable braucht Speicherplatz. Aber das ist nicht entscheidend.
                            Viel gravierender ist: Durch das Umkopieren wird die Herkunft der Daten verschleiert. Wenn $_GET['var'] in einem Ausdruck auftaucht, sieht man sofort: Aha, Benutzereingabe - aufpassen, nicht vertrauenswürdig. Einer Variablen wie $page sieht man das nicht mehr an.

                            ich weis doch was das für eine veriable ist

                            Zum anderen wäre es sinnvoll, vor dem Springen das in $_GET["page"] übergebene gegen eine Liste erlaubter Werte zu prüfen.
                            ich habe bis jetzt keine seiten die da nicht benutzt werden sollen.

                            Es wäre dir also auch egal, wenn ein Scherzkeks sich durch /?page=http%3A%2F%2Fwww%2Egoogle%2Ecom%2F zu Google weiterleiten lässt.

                            haste auch wieder recht ^^

                            Obendrein verlangt die Spezifikation, dass beim Location-Header eine vollständige URL anzugeben sei.
                            und wieso sollte ich eine komplette URL eingeben wenns auch ohne geht?!?

                            Weil's die Spezifikation vorschreibt, und weil das Argument "wenns auch ohne geht" irgendwo zwischen Zufall und browserseitiger Fehlertoleranz dümpelt. Schon mit der nächsten Browserversion *könnte* es nicht mehr funktionieren, weil es nicht funktionieren *muss*.

                            tuts aber, zumindest im firefox und wer IE benutzt ist selber schuld, und wenn nicht mehr aktualisier ich das halt

                            1. Hallo

                              Obendrein verlangt die Spezifikation, dass beim Location-Header eine vollständige URL anzugeben sei.
                              und wieso sollte ich eine komplette URL eingeben wenns auch ohne geht?!?

                              Weil's die Spezifikation vorschreibt, und weil das Argument "wenns auch ohne geht" irgendwo zwischen Zufall und browserseitiger Fehlertoleranz dümpelt. Schon mit der nächsten Browserversion *könnte* es nicht mehr funktionieren, weil es nicht funktionieren *muss*.

                              tuts aber, zumindest im firefox und wer IE benutzt ist selber schuld, und wenn nicht mehr aktualisier ich das halt

                              Wenn du es gleich richtig[tm] machtest, bräuchtest du nichts aktualisieren. Ist das so schwer zu verstehen?

                              Tschö, Auge

                              --
                              Verschiedene Glocken läuteten in der Stadt, und jede von ihnen vertrat eine ganz persönliche Meinung darüber, wann es Mitternacht war.
                              Terry Pratchett, "Wachen! Wachen!"
                              Veranstaltungsdatenbank Vdb 0.3
                              1. Hallo

                                Obendrein verlangt die Spezifikation, dass beim Location-Header eine vollständige URL anzugeben sei.
                                und wieso sollte ich eine komplette URL eingeben wenns auch ohne geht?!?

                                Weil's die Spezifikation vorschreibt, und weil das Argument "wenns auch ohne geht" irgendwo zwischen Zufall und browserseitiger Fehlertoleranz dümpelt. Schon mit der nächsten Browserversion *könnte* es nicht mehr funktionieren, weil es nicht funktionieren *muss*.

                                tuts aber, zumindest im firefox und wer IE benutzt ist selber schuld, und wenn nicht mehr aktualisier ich das halt

                                Wenn du es gleich richtig[tm] machtest, bräuchtest du nichts aktualisieren. Ist das so schwer zu verstehen?

                                da haste recht aber ich habe irgendwie keine lust das wieder "umzubauen" wenns NOCH nicht nötig ist ;)

                            2. Mahlzeit meinkonto1100,

                              Viel gravierender ist: Durch das Umkopieren wird die Herkunft der Daten verschleiert. Wenn $_GET['var'] in einem Ausdruck auftaucht, sieht man sofort: Aha, Benutzereingabe - aufpassen, nicht vertrauenswürdig. Einer Variablen wie $page sieht man das nicht mehr an.

                              ich weis doch was das für eine veriable ist

                              Ja - *jetzt*. Dann viel Spaß irgendwann in einigen Monaten, wenn irgendwo Probleme auftreten und Du Dich fluchend durch den Code diverser Skripte kämpfst, weil Du nämlich selbst überhaupt nicht mehr durchblickst, was jetzt warum in welcher Variablen ist und wo die jeweiligen Werte herkommen.

                              So ist es halt: jeder ist schlauer ... der eine früher, der andere später.

                              tuts aber, zumindest im firefox und wer IE benutzt ist selber schuld, und wenn nicht mehr aktualisier ich das halt

                              Achso - du monitorst also permanent alle Versionen aller Browser und wie sie sich verhalten und bietest zusätzlich den Besuchern Deiner Seiten entsprechende Feedback-Möglichkeiten, damit sie Dir Probleme in speziellen Browsern melden können, so dass Du sofort reagieren und diverse Skripte durchackern kannst (s.o.)?

                              Meinst Du nicht, dass es *erheblich* sinnvoller ist, es gleich von Anfang an richtig zu machen?

                              MfG,
                              EKKi

                              --
                              sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
                              1. Ja - *jetzt*. Dann viel Spaß irgendwann in einigen Monaten, wenn irgendwo Probleme auftreten und Du Dich fluchend durch den Code diverser Skripte kämpfst, weil Du nämlich selbst überhaupt nicht mehr durchblickst, was jetzt warum in welcher Variablen ist und wo die jeweiligen Werte herkommen.

                                mach ich doch eh dauernd ;) die seite ist ja garnicht so groß

                                Achso - du monitorst also permanent alle Versionen aller Browser und wie sie sich verhalten und bietest zusätzlich den Besuchern Deiner Seiten entsprechende Feedback-Möglichkeiten, damit sie Dir Probleme in speziellen Browsern melden können, so dass Du sofort reagieren und diverse Skripte durchackern kannst (s.o.)?

                                so meine ich das nicht.
                                eher das im IE noch nie alles so richtig funktioniert hat und es somit sinnlos ist..... scherz.
                                ich hab ja jetz auch von HTTP_GET_VARS auf _GET umgestellt ;)

                        2. Hi!

                          ich habe bis jetzt keine seiten die da nicht benutzt werden sollen.

                          Es geht nicht darum - um beim Tür-Vergleich zu bleiben -, dass du deine Wohnung wie von dir vorgesehen nutzt, sondern darum dass kein anderer sie für seine Zwecke missbrauchen kann.

                          Es geht also nicht so sehr um die Seiten, die du auf deinem Host nicht benutzt haben willst, sondern um die externen Ziele, die man deinem Script einfach so unterschieben kann, wenn man es nicht absichert.

                          und wer so doof ist und da 'index eingibt' .....

                          Es gibt genügend, die die "Doofheit" Einiger für ihre Zwecke auszunutzen wissen, um sich an andere Doofen zu bereichern, die in die präparierte Falle getappt sind.

                          und wieso sollte ich eine komplette URL eingeben wenns auch ohne geht?!?

                          Zusammen mit deiner Nicht-Prüfung ist das eben eine Lücke, die für beliebige Ziele verwendet werden kann. Wenn du zwar die Prüfung wegließest, aber eine vollständige URL zusammengabaut hättest, wären die Sprungziele wenigstens schon mal auf deine Domain begrenzt gewesen und hätten im Zweifelsfall einen 404 ergeben. So aber kann man den Anwender, der einen Link zu deinem harmlosen Angebot klickt, sonstwohin schicken.

                          Lo!

                          1. Hi!

                            ich habe bis jetzt keine seiten die da nicht benutzt werden sollen.

                            Es geht nicht darum - um beim Tür-Vergleich zu bleiben -, dass du deine Wohnung wie von dir vorgesehen nutzt, sondern darum dass kein anderer sie für seine Zwecke missbrauchen kann.

                            Es geht also nicht so sehr um die Seiten, die du auf deinem Host nicht benutzt haben willst, sondern um die externen Ziele, die man deinem Script einfach so unterschieben kann, wenn man es nicht absichert.

                            und wer so doof ist und da 'index eingibt' .....

                            Es gibt genügend, die die "Doofheit" Einiger für ihre Zwecke auszunutzen wissen, um sich an andere Doofen zu bereichern, die in die präparierte Falle getappt sind.

                            und wieso sollte ich eine komplette URL eingeben wenns auch ohne geht?!?

                            Zusammen mit deiner Nicht-Prüfung ist das eben eine Lücke, die für beliebige Ziele verwendet werden kann. Wenn du zwar die Prüfung wegließest, aber eine vollständige URL zusammengabaut hättest, wären die Sprungziele wenigstens schon mal auf deine Domain begrenzt gewesen und hätten im Zweifelsfall einen 404 ergeben. So aber kann man den Anwender, der einen Link zu deinem harmlosen Angebot klickt, sonstwohin schicken.

                            die seite kennt eh kaum einer und da wird auch wohl keiner sowas machen

                            1. Hi!

                              die seite kennt eh kaum einer und da wird auch wohl keiner sowas machen

                              Ich sehe, du willst einfach nicht und suchst nach Ausreden, etwas nicht richtig machen zu müssen. Es interessiert die Bots nicht, ob eine Seite gut bekannt ist oder nicht. Die suchen automatisiert das Web ab, spammen in Gästebücher und Foren, und genauso suchen sie nach Sicherheitslücken, um sie auszunutzen.

                              Lo!

                              1. Ich sehe, du willst einfach nicht und suchst nach Ausreden, etwas nicht richtig machen zu müssen. Es interessiert die Bots nicht, ob eine Seite gut bekannt ist oder nicht. Die suchen automatisiert das Web ab, spammen in Gästebücher und Foren, und genauso suchen sie nach Sicherheitslücken, um sie auszunutzen.

                                Das zuspammen von Gästebüchern ist mir bekannt :( aber auf dieser seite gibts kein gästebuch
                                und ich mach das auch nur so nebenbei, also hatte ich eigl auch kB noch extra n' test einzubauen ob man auf diese seite darf...

                                und wie gesagt hab ich kaum ahnung von php

                      2. // Liste erlaubter Sprungziele

                        $destinations = array('foo', 'bar', 'qux', 'index1');
                        if (!isset($_GET["page"]) or !in_array($_GET["page"], $destinations))
                          // wenn nicht vorhanden oder nicht erlaubter Wert, dann zwangsweise zur index1 springen
                          $_GET["page"] = 'index1';

                        header('Location: http://' . $_SERVER['SERVER_NAME'] . '/' . $_GET["page"] . '.php');

                        
                        >   
                          
                        diese funktion habe ich jetz eingebaut ;)
                        
      2. Hallo,

        Warum nicht?

        Weil <? deaktiviert werden kann. Konfigurationsabhängigkeit stinkt.

        Gruß, Tom

        1. Hi!

          Warum nicht?
          Weil <? deaktiviert werden kann. Konfigurationsabhängigkeit stinkt.

          Mit dem Argument dürftest du überhaupt nichts mehr machen können, denn alles ist irgendwie konfigurationsabhängig.

          Um es nochmal zu verdeutlichen, was ich meine: Ich habe nichts dagegen - ganz im Gegenteil - dass diese Abhängigkeit dargestellt wird und die Vorteile der Langschreibweise hervorgehoben werden, so dass beim Erläuterungsempfänger ein Bewusstsein über das Thema entsteht und er selbst über die Verwendung urteilen kann. Aber ich sehe es als keinesfalls notwendig an, sie generell zu missbilligen, solange seitens PHP die Unterstützung dafür nicht abgekündigt ist.

          Lo!

          1. Aber ich sehe es als keinesfalls notwendig an, sie generell zu missbilligen, solange seitens PHP die Unterstützung dafür nicht abgekündigt ist.

            Guter Vorschlag - ich stell' mir grade ein Framework wie TYPO3 vor, wo man vom Benutzer der das Ding verwenden möchte verlangt, dass er weit über 3000 Files ändert, nur damit sie "trotzdem" laufen, weil der Hoster ums verrecken keine short_open_tags erlauben will. Und jetzt komm mir nicht mit "Hoster wechseln" :)

            Auf short_open_tags zu verzichten ist kein Beinbruch, der Code bleibt aber in jedem Fall portabel, da die "langschreibweisen" garantiert überall funktionieren.

            1. Hi!

              Aber ich sehe es als keinesfalls notwendig an, sie generell zu missbilligen, solange seitens PHP die Unterstützung dafür nicht abgekündigt ist.

              Beachte bitte, dass ich von einer generellen Missbilligung schrieb und nicht von einer für den Spezialfall der Portabilität, auf den du dich im Folgenden beziehst.

              Guter Vorschlag - ich stell' mir grade ein Framework wie TYPO3 vor, wo man vom Benutzer der das Ding verwenden möchte verlangt, dass er weit über 3000 Files ändert, nur damit sie "trotzdem" laufen, weil der Hoster ums verrecken keine short_open_tags erlauben will. Und jetzt komm mir nicht mit "Hoster wechseln" :)

              Nein, ich komme dir mit dem von mir schon Gesagten, dass es auch gute Gründe gegen die Kurzschreibweise gibt. Einer davon ist Portabilität. Wenn diese benötigt wird, ist es keine Frage, dass sie nicht verwendet werden sollte. Da aber Portabilität nicht bei jedem Projekt notwendig ist, ist es auch nicht notwendig, sie generell abzulehnen.

              Außerdem - auch schon gesagt - möchte ich den Hoster sehen, der sich freiwillig Supportanfragen aufhalst, indem er die SOT ausschaltet, weil sie in einigen wenigen Fällen mit XML-Prolog kollidieren, den man jedoch wegen IrgendEinem Browser gar nicht haben will.

              Auf short_open_tags zu verzichten ist kein Beinbruch, der Code bleibt aber in jedem Fall portabel, da die "langschreibweisen" garantiert überall funktionieren.

              Und genauso ist es kein Beinbruch sie einzusetzen, wenn das Script nur auf _einer_ definierten Umgebung mit eingschalteten SOT laufen.

              Lo!

  2. Hallo!
    kann man Variablen an Seiten in Framesets übergeben, weil bei mir geht das irgendwie nicht.
    Die Variable lese ich dann mit HTTP_GET_VARS[...] aus.

    ungefähr so:

    index.php

    <?php
    $var = "text";
    ?>
    <html>
      <head>
      </head>

    <frameset...>
        <frame src="index2.php?var=<? echo $var; ?>"...>
        ...
      </frameset>

    <body>
      </body>
    </html>

    
    >   
    > index2.php  
    > ~~~html
      
    
    > <?php  
    > $var = $HTTP_GET_VARS['var'];  
    > echo $var;  
    > ?>  
    > 
    
    

    ich hab jetz das frameset ersetzt/weggemacht ;)