Функция urldecode () не декодирует пробел + - PullRequest
0 голосов
/ 05 января 2012

Я работаю над формой, чтобы отправить файл для удаления. Поскольку многие из этих имен имеют элементы-пробелы, я использовал функцию urlencode (). Тем не менее, когда я urldecode (), символ + не декодируется в пробел, и возникает ошибка. Что я делаю не так?

Вот код из delete.php с некоторыми вариантами декодирования:

<?php 

$file= 'test image.jpg';

echo "<form method=\"post\" name=\"deleteFile\" action=\"delete.php?delete=true\">          
<input type=\"hidden\" name=\"FileToDelete\" value=".urlencode($file)." >
<input class=\"delete_button\" type=\"submit\" value=\"X\"></div></form>";

if(isset($_GET['delete']) && $_GET['delete']=='true') {   
echo $_POST[urldecode("FileToDelete")].' #1'.'<br>';
echo $_POST[urldecode('FileToDelete')].' #2'.'<br>';
echo $_POST[htmlspecialchars(urldecode('FileToDelete'))].' #3'.'<br>';
}

?>

1 Ответ

0 голосов
/ 01 августа 2012

Вы расшифровываете не имя файла, а текст FileToDelete. Я думаю, вы хотите сделать следующее:

if(isset($_GET['delete']) && $_GET['delete']=='true') {   
    $decodedFilename = urldecode($_POST['FileToDelete']);

    echo $decodedFilename.' #1'.'<br>';
    echo $decodedFilename.' #2'.'<br>';
    echo htmlspecialchars($decodedFilename).' #3'.'<br>';
}
...