Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] url-pendant zu __FILE__ gesucht

Einklappen

Neue Werbung 2019

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

  • [Erledigt] url-pendant zu __FILE__ gesucht

    Moin!
    Ich versuche gerade mein Script includiersicher zu machen, bei include und file() kann ich ja einfach
    dirname(__FILE__) . "/"
    vor den Pfad setzen, nur was mach ich bei Links? Da bräucht ich irgendwie den relativen Pfad von der inkludierenden zu inkludierten Datei.

    echo "<a href=\" ???/pfad/zur/datei.php\">Link</a>";

    Da gibts ja noch $_SERVER['PHP_SELF'] und $_SERVER['DOCUMENT_ROOT']

    Ich probiere seit einiger Zeit sie mit Strinfunktionen zu bearbeiten, komm aber nicht drauf.

    Gruss, Mulder


  • #2
    Zitat von Mulder Beitrag anzeigen
    Ich versuche gerade mein Script includiersicher zu machen
    Was verstehst du darunter?

    Da gibts ja noch $_SERVER['PHP_SELF'] und $_SERVER['DOCUMENT_ROOT']
    Beide haben nichts mit HTTP zu tun.

    (Es gibt aber andere Einträge in $_SERVER, die schon eher was damit zu tun haben.)
    Ich probiere seit einiger Zeit sie mit Strinfunktionen zu bearbeiten, komm aber nicht drauf.
    Na dann beschreib erst mal, worauf eigentlich.

    Kommentar


    • #3
      var_dump($_SERVER);

      Kommentar


      • #4
        Ok, ich versuchs nochmal
        Da ist eine datei.php, die eine andere einbindet

        include __FILE__."/sdf/included.php";

        oder einliest

        $file = file(__FILE__."/jkl/daten.csv");

        und in der sich auch Links befinden

        <a href="dfg/datei2.php">Text</a>

        Jetzt soll die datei.php von anderen beliebigen Dateien (vom selben Server) eingebunden werden können, so dass die Links noch gültig sind.

        Ach so, die Stringfunktionen auf __FILE__ und die $_SERVER Variablen
        PHP-Code:
        $path substrdirname(strstr__FILE__dirname($_SERVER['PHP_SELF']))), strlen(dirname($_SERVER['PHP_SELF']))); 
        Das war ein Versuch, der Pfad stimmt aber nicht immer, zumindet nicht, wenn die einbindende Datei im document_root liegt.

        Kommentar


        • #5
          Zitat von Mulder Beitrag anzeigen
          Jetzt soll die datei.php von anderen beliebigen Dateien (vom selben Server) eingebunden werden können, so dass die Links noch gültig sind.
          Dann setze die Links entsprechend - bspw. in Bezug auf die Domainwurzel.

          SELFHTML: HTML/XHTML / Allgemeine Regeln für HTML / Referenzieren in HTML

          Kommentar


          • #6
            Das geht ja leider nicht, da der Ordner, in der die datei.php liegt, überall liegen kann. Das Script sollen andere halt auch beutzen können.

            Kommentar


            • #7
              base tag
              oder vorangestelltes /

              Kommentar


              • #8
                Hi,
                Einfluss auf den Header habe ich auch nicht. Es ist ein Menü, was in verschiedene Seiten eingebunden werden können soll.

                Ich meine irgendwo mal einen Hinweis gelesen zu haben, dass man die Variablen so vergleichen und zurechtschneiden kann, dass man die url, bzw. den rel. Pfad zu der inkludierten Datei erhält.

                Dann probier ich mal weiter.

                Kommentar


                • #9
                  Zitat von Mulder Beitrag anzeigen
                  Ich meine irgendwo mal einen Hinweis gelesen zu haben, dass man die Variablen so vergleichen und zurechtschneiden kann, dass man die url, bzw. den rel. Pfad zu der inkludierten Datei erhält.
                  Wie schon mehrfach gesagt, $_SERVER enthält alles, was in der Hinsicht interessant sein könnte - also schau dir an, was davon du ggf. brauchen kannst.

                  Kommentar


                  • #10
                    Man braucht doch auf jeden Fall auch __FILE__ , weil das die einzige Variable ist, mit der man was über eine eingebundene Datei herausbekommen kann, oder hab ich was übersehen bei $_SERVER[].

                    Ich bin jetzt soweit, das es funktioniert, wenn die einbindende Datei in direkter Line über dem installtionsorder ist:
                    PHP-Code:
                    if (dirname($_SERVER['PHP_SELF']) == "/") {
                    $path dirnamesubstr__FILE__strlen$_SERVER['DOCUMENT_ROOT'].dirname($_SERVER['PHP_SELF']) ) ) );
                        }
                    else {
                        
                    $path dirnamesubstr__FILE__strlen$_SERVER['DOCUMENT_ROOT'].dirname($_SERVER['PHP_SELF']) ) + ) );
                        } 

                    Kommentar


                    • #11
                      nur was mach ich bei Links?
                      - Ein zentrales Script benutzen
                      - Scripte in einem gemeinsamen Ordner speichern...
                      --

                      „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


                      • #12
                        Habs jetzt gelöst, auch wenn ich das ziemlich umständlich finde:
                        PHP-Code:
                        if (dirname($_SERVER['SCRIPT_NAME']) == "/") {
                        $path dirnamesubstr__FILE__strlendirname($_SERVER['SCRIPT_FILENAME']) ) ) );
                            }

                        else if (!
                        strstrdirname(__FILE__), dirname($_SERVER['SCRIPT_FILENAME']))) {
                            
                        $path_up "";
                            
                        $temp explode("/"dirname($_SERVER['SCRIPT_NAME']));
                            for(
                        $x=0;$x<count($temp) - ;$x++) {
                                
                        $path_up $path_up."../";
                                }
                            
                        $path_down =     substrdirname(__FILE__), strlen$_SERVER['DOCUMENT_ROOT'] ) + ) ;
                            
                        $path $path_up.$path_down;
                            }

                        else {
                            
                        $path dirnamesubstr__FILE__strlendirname$_SERVER['SCRIPT_FILENAME'] ) ) + ) );
                            } 

                        Kommentar


                        • #13
                          Gruselig. Wer sowas braucht, hat eindeutig seine Applikation schlecht geplant. Ich benutze allenfalls eine Konstante für den Ressourcenpfad oder aber basepath.
                          --

                          „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