wolli: url überprüfen

hi und guten Tag,

ich hab folgendes Problem

in einem Formular wird mit $url eine URL übergeben
Diese darf aber nur auf ein Verzeichniss verweisen
http://ich/bin/ein/verzeichnis
Doch manche user verweisen aber auf eine Datei
http://ich/bin/ein/verzeichnis/datei.html

Wie ermittle ich nun ob es sich bei der URL
um ein Verzeichnis handelt oder um eine Datei
wobei die Dateiendung ja beliebig sein kann
.php .html .htm .......

Jetzt schon Danke für eure Hilfe

Gruß
wolli

  1. Hallo Wolli,

    Wie ermittle ich nun ob es sich bei der URL
    um ein Verzeichnis handelt oder um eine Datei
    wobei die Dateiendung ja beliebig sein kann
    .php .html .htm .......

    tja, eigentlich gar nicht!
    Wenn nicht so was wie "index.html", "index.cgi"... da steht, ist es nach Deiner Aussage ein Script usw, aber kein Verzeichnis.

    Nun Verzeichnisse lassen sich aber in der Regel im Netz gar nicht zeigen, sie verweisen immer - auch ohne .anhängel - auf eine Datei. Meist ist das index.html - ansonsten steckt auch eine Datei (vom Server generiert) dahinter, die Listing des Verz. ermöglicht.

    Beschreib mal bitte, was Du genau erreichen möchtest.

    Gruß
    Reiner

    1. Wenn nicht so was wie "index.html", "index.cgi"... da steht, ist es nach Deiner Aussage ein Script usw, aber kein Verzeichnis.

      Umgekehrt natürlich!

      1. hi Reiner,

        $link darf nur ein Verzeichnis sein

        $link = http://das/ist/ein/verzeichnis/dummheit.html

        Wie checke ich jetzt ob für $link ein Verzeichniss
        oder eine Datei angegeben ist.

        if($link != VERZEICHNIS)
        {echo " du bist blöd! du musst ein Verzeichnis und keine Datei als Link angeben";
        exit;}

        if($link == VERZEICHNIS)
        {echo " Danke, der Link wurde eingetragen";
        exit;}

        gruss wolli

        1. hi,

          $link darf nur ein Verzeichnis sein

          $link = http://das/ist/ein/verzeichnis/dummheit.html

          Wie checke ich jetzt ob für $link ein Verzeichniss
          oder eine Datei angegeben ist.

          if($link != VERZEICHNIS)
          {echo " du bist blöd! du musst ein Verzeichnis und keine Datei als Link angeben";
          exit;}

          if($link == VERZEICHNIS)
          {echo " Danke, der Link wurde eingetragen";
          exit;}

          sorry, aber das ist doch Unsinn.
          http://www.domain.de/ entspricht doch (oftmals) http://www.domain.de/index.html

          Es ist kein Programmierproblem, aber in Deiner Aussage steckt doch, daß ich bei ersterem nicht "blöd" bin, bei zweitem schon, obwohl beides auf das Gleiche abzielt!

          Gruß
          Reiner

          1. hi Reiner,

            um Gottes willen, das mit dem blöd war nicht auf dich gemünzt.
            Wenn das so ausgesehen hat, dann war das ungewollt und es tud mir leid.

            das http://das/ist/ein/verzeichnis auf index.*** rausläuft
            ist schon klar,
            aber das war nicht meine Frage

            Ich brauch den Link um über mode rewrite
            eine Weiterleitung auf ein Verzeichnis zu machen.
            Und das funktioniert nur richtig wenn der Link auf ein Verzeichnis
            zeigt und nicht auf eine Datei

            RewriteEngine on
            RewriteRule ^(.*) http://domain.tld/das/ist/ein/verzeichnis/$1 [P]
            funktioniert!

            RewriteEngine on
            RewriteRule ^(.*) http://domain.tld/das/ist/ein/verzeichnis/datei.html/$1 [P]
            funktioniert nicht!

            Also ist und bleibt die Frage:
            wie kann ich einen Link der aus einem Formular als $link
            übergeben wird daraufhin überprüfen, ob der Link eine Datei enthält
            oder nicht.

            Danke und nette Grüße
            wolli

            hi,

            $link darf nur ein Verzeichnis sein

            $link = http://das/ist/ein/verzeichnis/dummheit.html

            Wie checke ich jetzt ob für $link ein Verzeichniss
            oder eine Datei angegeben ist.

            if($link != VERZEICHNIS)
            {echo " du bist blöd! du musst ein Verzeichnis und keine Datei als Link angeben";
            exit;}

            if($link == VERZEICHNIS)
            {echo " Danke, der Link wurde eingetragen";
            exit;}

            sorry, aber das ist doch Unsinn.
            http://www.domain.de/ entspricht doch (oftmals) http://www.domain.de/index.html

            Es ist kein Programmierproblem, aber in Deiner Aussage steckt doch, daß ich bei ersterem nicht "blöd" bin, bei zweitem schon, obwohl beides auf das Gleiche abzielt!

            Gruß
            Reiner

        2. Hallo,

          Du kannst mit is_dir() (http://php.net/is_dir) überprüfen, ob es sich um ein Verzeichnis handelt.

          Schöne Grüße
          Julian

          --
          "Wer in die Fußstapfen anderer tritt, hinterlässt selbst keinen Eindruck." - Christiane Weinhold
          1. Hi Julian,

            Du kannst mit is_dir() (http://php.net/is_dir) überprüfen, ob es sich um ein Verzeichnis handelt.

            Leider liefert is_dir() bzw. is_file() nur dann TRUE zurück, wenn der entsprechende File bzw. Ordner auch existiert!

            Eventuell hilft das wolli nicht weiter, wenn er anschließen eine .htaccess Datei mit mod_rewrite schreiben will.

            Eine andere Methode das anzugehe wäre eventuell pret_match(), was allerdings voraussetzen würde, dass kein Ordner bei dir einen Punkt im Namen hat:

            $preg = "/[a-z0-9/]+[.][a-z]+/";  //ungetestet

            if(!preg_match($preg,$file)) echo "Du bist klug!";
            else echo "Du bist einfach nur dumm!";

            Hier wird nun überprüft, ob der String $file einen Punkt enhält, wenn nicht wird gesagt, dass man klug seie, wenn er einen Punkt enthält ist man anscheinen doof ;-)

            So wie es oben geschrieben steht, matched das nur auf Filepathes, die nur Kleinbuchstaben, Zahlen oder einen Slash enthalten.

            MfG, Dennis.

            --
            Mein SelfCode: ie:{ fl:{ br:^ va:) ls:< fo:) rl:( n4:& ss:) de:> js:( ch:{ sh:| mo:) zu:|
            Signatur 1 von 3:
            Meine Homepage: http://www.riehle-web.com
            Tutorial: http://tutorial.riehle-web.com