String auf die Zeichenfolge .. prüfen

GalaxyWarrior

Erfahrenes Mitglied
Hi, ich habe versucht einen Dateibrowser zu bauen. Da ich das Verzeichniss in welchem man sich befindet über eine Variable in der URL weitergebe, wird diese, sobald man auf ../ klickt ( Verzeichniss hoch ) um ../ erweitert. Es fubktioniert zwar, aber 1. ist das mist wenn in der URL irgendwann web0/html/../files/images/../../html usw steht, 2. kann ich damit nicht wirklich weiterarbeite. Naja, hab ich mir gedacht, ich kann ja mal die Variable in der URL auf die Zeichenfolge .. prüfen und das dann entfernen, genauer so:

PHP:
$before = $new;
$dir = $dirurl."/";
$verzeichnis=opendir($dir);
while ($file = readdir ($verzeichnis)) {
	$cwd = getcwd();
	if(preg_match("/../", $dir)){ 			
				$back = eregi_replace("$before","", $dir); 
				$back = eregi_replace("../","", $dir);
	?>
			  <meta http-equiv="refresh" content="0; url=<? echo 'dateibrowser.php?sid='.session_id().'&dirurl='.$back.'' ?>">
	<?
	}else{
		if ($file != "." && $file != "..") {
			$test = filetype($dir . $file);
			if($test == "dir"){
				echo "<a href=dateibrowser.php?sid=".session_id()."&dirurl=".$dir.$file."&new=".$file."&alt=".$before.">".$file."</a><br>";
			}elseif($test == "file"){
				echo "<a href=dateibrowser.php?sid=".session_id()."&fileurl=".$dir.$file.">".$file."</a><br>";
			}
		}				
	}
}

allerdings geht das nicht. Irgendwie geht der jetzt immer in die 1. if abfrage, also egal was da steht, ich denke er sucht bei .. einfach alles. aber wie kann ich das anders machen?

Wenn ich "/../" mit "/html/" ersetze, dann macht er das immer wenn html in der Variablen vorkommt. Warumm also nicht bei "/../"

Ich hoffe es war verständlich.
Gruß GalaxyWarrior
 
Für den ersten Parameter der preg_match-Funktion muss ein Patter verwendet werden. Die Syntax der Pattern steht oben (Link).

mfg
dmx
 

Neue Beiträge

Zurück