загрузка php не работает для &


У меня есть эта функция php для загрузки файлов с моего public_html.

function download($file){
$dir = "RepList/";
$path = $dir.$file;

if(!file_exists($path))
{
    die("Error : The file does not exists !");
    }else{
    header("Cache-Control: public");
    header("Content-Description: File Transfer");
    header("Content-Disposition: attachment; filename=$file");
    header("Content-Typr: application/w3g");
    header("Content-Transfer-Encoding: binary");

    readfile($path);
    }
}

if (isset($_GET['download']))
{
    if(!empty($_GET['download']))
    {
        $file = $_GET['download'];
        download($file);
    }
}

Для загрузки я использую что-то вроде:

<a class="download"  id="download'.$i.'_" href="../download.php?download='.$cc->EList[$i]->getEName().'" target="_blank">Download</a>

Если у меня в имени файла есть символ "&", я получу сообщение "Ошибка: файл не существует!". Я работал над этим примерно 1 год назад, и теперь я хочу исправить ошибку.

Есть какие-нибудь советы? Что-нибудь легкое и быстрое.

Author: Benjamin, 2014-07-18

1 answers

Вероятно, вам следует использовать функцию urlencode() и изменить создание HTML-ссылки на:

<a class="download"  id="download'.$i.'_" href="../download.php?download='.urlencode($cc->EList[$i]->getEName()).'" target="_blank">Download</a>

В противном случае & символ обрабатывается как разделитель переменных в URL

 3
Author: Marcin Nabiałek, 2014-07-18 13:51:11