Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] # und alles was folgt aus URL auslesen

Einklappen

Neue Werbung 2019

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

  • [Erledigt] # und alles was folgt aus URL auslesen

    Hallo liebe Leute, ich habe folgendes Problem:

    Ich habe auf meiner Seite nur eine Datei mit Design meta usw. den Content für die Hauptbox include ich jeweils. Der Grund dafür ist das ich den Wechsel von Content mit JQuery animieren wollte. Das klappt auch wunderbar, die links zu den einzelnen Seiten sehen so aus:

    Code:
    <a href="#linkname" file="dateiname">linkname</a>
    Jetzt möchte ich aber das wenn jemand die URL öffnet auch auf die gewünschte Seite gelangt. Das Problem dabei, php scheint # und alles darauf folgende zu ignorieren.

    mit JavaScript geht es ganz einfach:

    Code:
    document.URL.split("#")[1];
    meine php versuche scheiterten leider:

    PHP-Code:
    $PHP_SELF."#".$QUERY_STRING
    Danke für eure Hilfe


  • #2
    $_SERVER["PHP_SELF"]...
    Und das zerlegt den String nicht.

    Schau dir explode, substr, strpos an

    PHP funktioniert auch nicht wie JavaScript.
    Fynder - http://www.fynder.de - Tutorials zum Thema Technik

    Kommentar


    • #3
      PHP: parse_url - Manual

      * scheme - e.g. http
      * host
      * port
      * user
      * pass
      * path
      * query - after the question mark ?
      * fragment - after the hashmark #
      "Alles im Universum funktioniert, wenn du nur weißt wie du es anwenden musst".

      Kommentar


      • #4
        Das Problem ist das php das fragment zwar aus einer URL auslesen kann aber das $_SERVER array liefert (bei mir jedenfalls) kein fragment. Gibt es nicht irgendeine Möglichkeit an die komplette URL zu kommen?

        Kommentar


        • #5
          PHP: $_SERVER - Manual

          'REQUEST_URI'
          The URI which was given in order to access this page;
          PHP liefert einem mehr Infos über $_SERVER als man denkt wenn man das Handbuch lesen würde...

          Btw: PHP_SELF ermöglicht XSS Injection. Verwendung ist daher dringend zu vermeiden.
          "Alles im Universum funktioniert, wenn du nur weißt wie du es anwenden musst".

          Kommentar


          • #6
            Zitat von Dark Guardian Beitrag anzeigen
            PHP liefert einem mehr Infos über $_SERVER als man denkt wenn man das Handbuch lesen würde...
            Und wenn man das Ganze dann mal ausprobiert kommt man zum Schluss das es doch nicht angezeigt wird. Mal print_r($_SERVER); gemacht und gesucht? Wenn ja hättest du gesehen dass das in keiner Variable steht.
            MfG

            Kommentar


            • #7
              Zitat von gs93 Beitrag anzeigen
              Und wenn man das Ganze dann mal ausprobiert kommt man zum Schluss das es doch nicht angezeigt wird. Mal print_r($_SERVER); gemacht und gesucht? Wenn ja hättest du gesehen dass das in keiner Variable steht.
              MfG
              Stimmt anscheinend.

              Warum nimmst du nicht den üblichen Query-String mit ? und &? Laut Google scheint das Fragment nämlich gar nicht von Browser an den Server geschickt zu werden.
              "Alles im Universum funktioniert, wenn du nur weißt wie du es anwenden musst".

              Kommentar


              • #8
                Wenn ich einen Link zu einem Dokument erstelle wird dieses geladen und die Animation somit hinfällig. Und ich glaube href="#" ist die einzige Möglichkeit das kein anderes Dokument geladen wir. Gibt es dort vielleicht auch eine Möglichkeit ohne # ?

                Kommentar


                • #9
                  Das Fragment wird nur über direkte Links geschickt.
                  Wenn man das beispielsweise nur auf der HTML-Ansicht klickt, wird kein Request an den Webserver gesendet, sondern nur zum aktuellen Anker gesprungen.
                  Du müsstest, wenn du es wirklicj brauchst diesen anker zusätzlich als Parameter an die URL anhängen um diesen verarbeiten zu können.

                  Da ein Anker für den Server völlig belanglos ist, wird dieser einfach ignoriert!
                  "My software never has bugs, it just develops random features."
                  "Real programmers don't comment. If it was hard to write, it should be hard to understand!"

                  Kommentar


                  • #10
                    Zitat von mario Beitrag anzeigen
                    Wenn ich einen Link zu einem Dokument erstelle wird dieses geladen und die Animation somit hinfällig. Und ich glaube href="#" ist die einzige Möglichkeit das kein anderes Dokument geladen wir. Gibt es dort vielleicht auch eine Möglichkeit ohne # ?
                    Ähm, du hast da ein grundsätzliches Missverständnis.

                    <a href="#ziel"> Ist nichts anderes als ein Anker um innerhalb von Dokumenten zu springen.

                    <a name="ziel"> klickt man oben genannten Link springt der Browser zum Anker mit dem Namen Ziel.

                    Da kein neues Dokument geladen wird, wird auch gar nichts an PHP bzw. an den Server gesendet. Wie soll das also funktionieren?

                    Das was du willst lässt sich nur mit AJAX umsetzen. Dabei wird ein neuer Http Request über JavaScript ausgeführt und die Antwort an das JavaScript weiter geleitet.

                    Somit hast du dann die Möglichkeit den Content dynamisch zu laden. Das hat aber auch Nachteile. Da sich die angezeigte Seite nicht ändert wird beim speichern in Favoriten immer die gleiche Seite gespeichert, unabhängig vom derzeitigem Inhalt. Zurück/Vorwärts Buttons vom Browser lassen sich ohne weiteres auch nicht mehr bedienen u.s.w..

                    Du müsstest, wenn du es wirklicj brauchst diesen anker zusätzlich als Parameter an die URL anhängen um diesen verarbeiten zu können.
                    Ich bin auch davon ausgegangen das bei URLs wie z.B. www.example.com/something.php#target das Fragment mitgesendet wird, was aber nicht geschieht. Es ist in PHP nirgends verfügbar weil es eben vollkommen belanglos für den Server ist.
                    "Alles im Universum funktioniert, wenn du nur weißt wie du es anwenden musst".

                    Kommentar


                    • #11
                      Das ist so nicht richtig an den Server kann man es senden, wenn man in einen Link das ganze hart reinmacht, allerdings wird es vom Server nicht ausgwertet!
                      "My software never has bugs, it just develops random features."
                      "Real programmers don't comment. If it was hard to write, it should be hard to understand!"

                      Kommentar


                      • #12
                        wenn man in einen Link das ganze hart reinmacht
                        Wüßte nicht, wie dieser Weg aussehen sollte.

                        @mario: Bitte mal diese Aussage erklären
                        Jetzt möchte ich aber das wenn jemand die URL öffnet auch auf die gewünschte Seite gelangt. Das Problem dabei, php scheint # und alles darauf folgende zu ignorieren.
                        Der Inhalt wird doch via Ajax angefordert und dabei animiert. Ich sehe gerade das Problem nicht?!
                        --

                        „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                        Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                        --

                        Kommentar


                        • #13
                          Zitat von Paul.Schramenko Beitrag anzeigen
                          Das ist so nicht richtig an den Server kann man es senden, wenn man in einen Link das ganze hart reinmacht, allerdings wird es vom Server nicht ausgwertet!
                          GET /server.php?test=tfdest HTTP/1.1
                          Host: localhost
                          User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; de; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 FirePHP/0.4
                          Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
                          Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3
                          Accept-Encoding: gzip,deflate
                          Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
                          Keep-Alive: 115
                          Connection: keep-alive
                          Der Anfrage Header für http://localhost/server.php?test=tfdest#testfragment. Ich sehe kein Fragment im Header und es tät mich interessieren wie du dem Browser erzählen willst das er es senden soll.
                          "Alles im Universum funktioniert, wenn du nur weißt wie du es anwenden musst".

                          Kommentar


                          • #14
                            Naja ganz einfach:

                            komplette index.php
                            PHP-Code:
                            <?php
                            error_reporting
                            (-1);
                            if (isset(
                            $_GET['var'])) {
                                echo 
                            'sent!<br />';
                            }
                            echo 
                            $_SERVER['REQUEST_URI'] . '<br />';

                            echo 
                            '<a href="index.php?var=test#fragment">link</a>';
                            Das fragment wird vom Server allerdings nicht ausgewertet!
                            Nach dem klick auf den Link wird "sent" ausgegeben! Vom Server wird allerdings nichts ausgewertet!
                            Mit nichts ausgewertet meine ich, dass das Fragment nicht mit übertragen wird.
                            "My software never has bugs, it just develops random features."
                            "Real programmers don't comment. If it was hard to write, it should be hard to understand!"

                            Kommentar


                            • #15
                              var hat überhaupt nichts mit dem Fragment zu tun.

                              Zudem reden wir immer noch von
                              <a href="#linkname" file="dateiname">linkname</a>
                              , also einem reinen Fragment als Link. Mit einem variablen Queryparameter wird das Prinzip ja verworfen. Der Witz an Ankerlinks ist ja gerade, dass kein (erneuter) Request erfolgt. Ergo auch keine Serverauswertung.
                              --

                              „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                              Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                              --

                              Kommentar

                              Lädt...
                              X