Маскиране на URL пренасочване в PHP

Трябва да покажа връзка за изтегляне на моя сайт, свързваща го с файл, хостван в друг домейн. Използвам следния подход.

1) Вземете действителния URL адрес от базата данни

$fileDownloadLink = "http://whatever.com/thefile.docx";

2) Кодирайте URL адреса и го предайте като параметър на download.php

$shortUrl = base64_encode($fileDownloadLink);
<a href="/bg<?php echo "http://www.mydomain.net/download.php?session=".$shortUrl;?>" target="_blank">Download Please</a>

3) Download.php декодира подадения низ и опитайте да прочетете файла.

<?php 
$str = $_GET["session"];
$path = base64_decode($str);
$mm_type="application/octet-stream";
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: public");
header("Content-Description: File Transfer");
header("Content-Type: " . $mm_type);
header("Content-Length: " .(string)(filesize($path)) );
header('Content-Disposition: attachment; filename="'.basename($path).'"');
header("Content-Transfer-Encoding: binary\n");
readfile($path);
exit();
?>

Но получавам тази грешка от download.php

Неприемливо!

Подходящо представяне на искания ресурс не може да бъде намерено на този сървър. Тази грешка е генерирана от Mod_Security.

Моля помогнете.


person Asim Siddiqui    schedule 13.12.2013    source източник


Отговори (1)


Можете просто да пренасочите в download.php;

$str = @$_GET["session"];
$path = base64_decode($shortUrl );
header("Location: $path");
exit();
person thomas    schedule 13.12.2013