url überprüfen
wolli
- php
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
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
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!
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
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
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.htmlEs 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
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
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.