Удаление файла по ссылке в php - PullRequest
1 голос
/ 27 марта 2012

Я делаю менеджера по работе с клиентами в интрасети, работающего на автономном компьютере. Магазин добавит файлы в каждую из записей о покупателях, и при загрузке каждой записи содержимое каждой папки покупателя будет отображаться на экране внутри тегов A, чтобы сотрудники могли щелкнуть по нему и просмотреть документы, которые были добавлены для этот клиент.

Я пытаюсь добавить ссылку для удаления на каждую страницу записи пользователя, но мне не очень повезло. Я использую следующее, я не уверен, что мне нужно получить другой php-файл для удаления или я могу поместить его в ссылку, как эта?

 echo '<a href="unlink(./customer-files/'.$customerID.'/'.$filename->getFilename().');">Delete File</a>';

При нажатии на ссылку все, что я получаю, это >>

The requested URL /customermgr/unlink(./customer-files/5/customeraddnewfile.jpg); was     not found on this server.

РЕДАКТИРОВАТЬ >>>>

Это происходит в ЛОКАЛЬНОЙ установке, не подключенной к Интернету, поэтому безопасность здесь не является проблемой, так как существует НУЛЕВОЙ шанс того, что кто-нибудь взломает ее, поскольку она не подключена к Интернету. Я просто искал самый быстрый и простой способ сделать это без необходимости писать слишком много лишнего кода :).

Ответы [ 4 ]

3 голосов
/ 27 марта 2012

Вы ... пытаетесь заставить ссылку запустить произвольный код PHP на сервере?Вы хоть представляете, насколько небезопасно это было бы, если бы это работало?

Вместо этого просто укажите следующую ссылку:

echo '<a href="unlink.php?id='.$customerID.'&file='.$filename->getFilename().'">Delete</a>';

Тогда ваш файл unlink.php может выглядеть примерно так:

$f = "customer-files/".$_GET['id']."/".$_GET['file'];
if( file_exists($f)) unlink($f);

Однако следует помнить о последствиях для безопасности.Например, убедитесь, что в имени файла нет экземпляров ../.

1 голос
/ 27 марта 2012

вы не можете сделать это так. Вы должны сделать вызов unlink в отдельном файле. В ссылке вы даете идентификатор или другое восстановление файла, который хотите удалить, затем в другом файле вы получаете этот идентификатор и удаляете соответствующий файл (после проверки разрешено действие).

Пример:

в вашем файле ссылки:

<a href="unlink.php?name=customernewfile.jpg">Delete me !</a>

И в вашем файле "unlink.php":

...
unlink('my/path/to/files/'.$_GET['name']);

Это ненадежный пример, не используйте его вот так.

0 голосов
/ 27 марта 2012

Если это сработает (это не так), это будет означать, что любой может удалить практически любой файл, изменив сам href.

Я не собираюсь вас шлепатьнасколько плоха ваша идея, но да - вам понадобится другой php-файл, который захватывает строку запроса и затем запускает unlink() на цели.

0 голосов
/ 27 марта 2012

Вы не можете запустить такую ​​команду через HTML, как вы это сделали. вам нужно будет создать новый файл PHP и ссылку на него:

<a href='delete-file.php?file=fileid'>

Затем страница php запустит команду unlink.

Однако имейте в виду, что здесь существуют СЕРЬЕЗНЫЕ проблемы безопасности, поскольку люди могут вводить любое имя файла по своему выбору (независимо от того, что вы задали в HTML). Также имейте в виду, что они могут перейти в каталог с помощью ./ в пути к файлу и удалить файлы на уровень выше

...