Ankündigung

Einklappen
Keine Ankündigung bisher.

Get-Befehl ohne Variable

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Get-Befehl ohne Variable

    Hallo PHPler!

    Auf meiner Homepage wird der Inhalt in einem iFrame dargestellt, dessen URL eine PHP-variable ist, die durch GET übergeben wird z.B. index.php?site=home zeigt die seite home.html im iframe an. Das funktioniert schon gut, nur hätte ich es gerne, dass das url-Format so aussieht: index.php?home das wäre ja quasi ein get ohne gleichzeichen und variable. So etwas hab ich schon bei anderen seiten gesehen.

    Ich hoffe ihr könnt mir helfen

    Cyberlink

  • #2
    Ist zwar ziemlicher Blödsinn, aber hier:
    PHP-Code:
    <?php
    $uri 
    $_SERVER['REQUEST_URI'];
    $uri explode('?',$uri);
    $uri $uri[1];

    Kommentar


    • #3
      mod_rewrite ist ebstimmt das was du suchst...

      Kommentar


      • #4
        Wenn du nur index.php?home hast, dann ist das lediglich die GET-Variable home ohne Inhalt.
        Wenn du es etwas schöner machen willst, kannst du es auch anders machen. Statt index.php?home rufst du index.php/home auf und hast /home dann im Array-Index $_SERVER['PATH_INFO'].

        Kommentar


        • #5
          $_server["query_string"]

          Edit: Bitte gross schreiben, das Forum wandelt meine Eingabe falsch um.

          Kommentar


          • #6
            Zitat von Manko10 Beitrag anzeigen
            Wenn du es etwas schöner machen willst, kannst du es auch anders machen. Statt index.php?home rufst du index.php/home auf und hast /home dann im Array-Index $_SERVER['PATH_INFO'].
            Ich geb zu, dass ich das nicht ausprobiert habe.
            Allerdings kann ich mir nicht recht vorstellen, dass das funktioniert.

            Damit wird index.php als Verzeichnisname interpretiert und home als Unterverzeichnis.
            Somit wird effektiv /index.php/home/ aufgerufen, was /index.php/home/index.php o.ä. entspricht. Jedenfalls eine ganz andere Datei als erwünscht

            Willst Du vielleicht mit mod_rewrite dran rumbiegen, wie es Hu5eL vorgeschlagen hat?

            Kommentar


            • #7
              Doch das klappt schon, ist allerdings haesslich. Falls ModRewrite nicht aktiviert ist, kannst du auch die ErrorDocument-Direktive verwenden.

              Kommentar


              • #8
                Zitat von Chriz Beitrag anzeigen
                Doch das klappt schon, ist allerdings haesslich. Falls ModRewrite nicht aktiviert ist, kannst du auch die ErrorDocument-Direktive verwenden.
                Hässlich ist da ja noch extrem zurückhaltend ausgedrückt....
                Und dafür bekommt man nicht die Finger gebrochen sowie lebenslanges Tastaturverbot?

                Allerdings frage ich mich, wie hilfreich der Vorschlag eigentlich sein sollte, wo Manko10 doch keine von beiden Varianten zur Verwirklichung erwähnt oder gar erklärt hat... ^^

                Kommentar


                • #9
                  Warum - hat er doch, ich weiss nicht ob es stimmt dass es in PATH_INFO steht, aber ich gehe mal davon aus.

                  Kommentar


                  • #10
                    Die eigene Datei muss aber doch erstmal aufgerufen werden, damit man PATH_INFO auswerten kann.
                    Mit der /index.php, die ursprünglich aufgerufen werden sollte, hat das ja nichts mehr zu tun.

                    Kommentar


                    • #11
                      Es funktioniert definitiv. Und ob ihr es glauben wollt oder nicht: das MediaWiki nutzt diese Variante auch.
                      Was meint ihr, warum es nicht z.B. http://de.wikipedia.org/Foobar, sondern http://de.wikipedia.org/wiki/Foobar heißt?
                      Richtig, weil dieses wiki lediglich ein index.php ist, das mit ModRewrite noch hingebogen wurde.
                      Bei einer nicht angepassten Standardinstallation wird auch nicht wiki, sondern index.php benutzt.

                      $_SERVER['PHP_SELF'] ist übrigens eine Zusammensetzung aus $_SERVER['SCRIPT_NAME'] und $_SERVER['PATH_INFO']. Deshalb ist $_SERVER['PHP_SELF'] auch kein sicheres Feld, wie viele meinen. Eine XSS-Lücke wie diese wird leicht übersehen:

                      http://example.com/index.php/<script>alert(/XSS/.source);</script>

                      Aber probiert es doch selbst aus:
                      PHP-Code:
                      <?php
                      print 'PHP_SELF: ' $_SERVER['PHP_SELF'] . '<br>';
                      print 
                      'SCRIPT_NAME: ' $_SERVER['SCRIPT_NAME'] . '<br>';
                      print 
                      'PATH_INFO: ' $_SERVER['PATH_INFO'];
                      ?>
                      Dieses in eine Datei speichern und dann mit http://localhost/dateiname.php/Blablub.

                      Kommentar


                      • #12
                        Na also. Du schreibst es ja nun selbst:
                        Zitat von Manko10
                        lediglich ein index.php ist, das mit ModRewrite noch hingebogen wurde
                        Natürlich geht es, wenn man ModRewrite nutzt. Das hatte ja schon Hu5eL geschrieben.

                        Du hast es aber als direkte Alternative zu
                        Code:
                        index.php?home
                        aufgeführt, welches wunderbar vollkommen ohne ModRewrite oder andere Hilfsmittel auskommt.

                        Kommentar


                        • #13
                          Er meint aber, dass mod rewrite hier lediglich wiki in index.php umsetzt. Die Variante index.php/test/ funktioniert demnach ohne 'weitere Hilfsmittel' (hab ich noch nicht probiert).

                          Kommentar


                          • #14
                            Jap, es funktioniert ohne Hilfsmittel (Probiert meinen Code doch mal aus).
                            Ich habe des Weiteren geschrieben, dass in einer Neinstallation noch kein ModRewrite zum Einsatz kommt und es dennoch funktioniert. Die Wikipedia wollte ihre URLs lediglich noch weiter verschönern.

                            Die Umleitung sieht auch nicht etwa so aus:
                            Code:
                            RewriteRule ^wiki/(.+)$    index.php?$1    [L]
                            sondern so:
                            Code:
                            RewriteRule ^wiki/(.+)$    index.php/$1    [L]
                            Es kann lediglich sein, dass AcceptPathInfo beim Apache ausgeschaltet ist, das dürfte aber eigentlich nie der Fall sein und notfalls kann man es auch per .htaccess wieder einschalten.
                            Als Referenz siehe auch: core - Apache HTTP Server

                            Kommentar


                            • #15
                              Wow. Das klappt tatsächlich. Ich nehme alles zurück und behaupte das Gegenteil. ^^

                              Ich bin immer fest davon ausgegangen, dass alles bis auf den letzten Teil ein Verzeichnis sein muss.

                              Kommentar

                              Lädt...
                              X