php $ _GET не берите мое имя документа с пробелом, поэтому я не могу отменить связь? - PullRequest
0 голосов
/ 28 июля 2011

У меня возникла проблема. Я попытался получить файл с этим кодом:

<?php


$path= "./uploadedfiles/";
$dir= dir($path);

while ($file = $dir->read()) {

        echo $file . "<a href=deletefile.php?file=$file>Delete</a><br>";         
}
$dir->close();
?>

и мой deletefile.php

<?php
$file = $_GET['file'];

echo $file;

$path =  'C:/wamp/www/project/uploadedfiles/'.$files;

if(unlink($path)){

    echo "File deleted";
}else{
    echo "Erro no uploaded";

}


?>

Проблема в том, что со строкой $ file = $ _GET ['file']; если мои файлы называются document name.pptx (включая пробел), $ _GET просто берет документ, поэтому мой файл никогда не удаляется, может кто-нибудь Помогите мне? Помощь очень ценится

Ответы [ 2 ]

0 голосов
/ 28 июля 2011

Вам необходимо изменить эту строку:

echo $file . "<a href=deletefile.php?file=$file>Delete</a><br>";

На

echo $file . '<a href="deletefile.php?file='.urlencode($file).'">Delete</a><br>';

См. urlencode Он преобразует ваше пространство в %20, поэтому его можно отправить через GET.

0 голосов
/ 28 июля 2011

Попробуйте использовать urlencode () и urldecode (), это должно кодировать пробел в имени файла при передаче его по URL

Итак

echo $file . "<a href=deletefile.php?file=" . urlencode($file) . ">Delete</a><br>";

и

$file = urldecode($_GET['file']);
...