Hi,
https://www.grc.com/x/ne.dll?bh0bkyd2
^^^^
Was soll mir das sagen?Mein Fehler - ich hätte besser keinen Verweis draus machen sollen. Es ging nur um die URI, die Dir Deine Frage beantwortet.
hehe... ok, war aber vielleicht auch ganz gut so.
Ich habe jetzt folgende Funktion erstellt:
function secureURL($filename) {
$x = 'bin'; $filename = trim($filename);
$ein = array('ä', 'ö', 'ü', 'ß', 'Ä', 'Ö', 'Ü', '&','§', ' ','%20','%','<','>','|','/',':','?','*','"',chr(92),chr(10),chr(13));
$aus = array('ae','oe','ue','ss','Ae','Oe','Ue','+','Par.','_','_', '~','~','~','~','~','~','~','~','~','~', '', '');
for ($i=0; $i<count($ein); $i++) {
$filename = str_replace($ein[$i], $aus[$i], $filename);
}
$filename = trim($filename, ".");
if(!$filename) $filename = date("d-m-Y_H-i-s").'.'.$x;
$ext = strtolower(substr($filename, strrpos($filename, '.')+1));
$test = array('php','shtm','htm','class','cgi','fcgi','pl','py','jsp','asp','dll');
for ($i=0; $i<count($test); $i++) {
if(substr($ext,0,strlen($test[$i])) == $test[$i]) $filename .= '.'.$x;
}
return urlencode($filename);
}
könnt Ihr auch gern mal hier ausprobieren.
Vielleicht ist auch einiges überflüssig oder umständlich...
Das Ziel ist wie gesagt, den übertragenen Dateinamen möglichst zu verwenden, zur Weitergabe URL-tauglich zu machen und Beeinflussungen des Servers zu vermeiden.
Übrigens habe ich festgestellt, daß eine Datei wie test.php.xxx unter meiner normalen xampp-Installation ausgeführt wird!? Deshalb (und um einen Download von Dateien mit umbenannten Endungen zu forcieren) habe ich mal .bin angehängt.
freundliche Grüße
Ingo