Как удалить файл в цикле PHP foreach - PullRequest
0 голосов
/ 17 декабря 2011

По сути, у меня есть веб-сайт, на котором перечислены файлы в каталоге над ним, и я пытаюсь сделать что-то вроде ссылки "x" рядом с ним, и при нажатии он удалит указанный файл с сервера.

foreach($logs as $log)
    {
        $noext = str_replace(".html", "", $log);
        $rawlog = str_replace("../", "", $noext);
        echo "<li><a href='#' onClick='javascript:loadLog(" . $rawlog . ");LogLoop();'>".$rawlog."</a></li>";
    }

Я не уверен, как к нему подойти, возможно я мог бы использовать клик для X, который каким-то образом вызывает функцию PHP для удаления указанного файла?!

Ответы [ 3 ]

2 голосов
/ 17 декабря 2011

Похоже, у вас уже есть механизм для вызова AJAX (предположительно, это то, что делает loadLog). Таким образом, вы бы сохранили тот же подход к удалению: сделать AJAX-вызов на сервер, используя имя файла в качестве переменной запроса, например, в URL

http://my.server/delete.php?file=some.log

Ваш серверный скрипт затем прочитает параметр и вызовет unlink, чтобы удалить файл.

Будьте осторожны: Вы, вероятно, должны убедиться, что только аутентифицированный персонал может действительно удалять журналы! Даже в этом случае любая схема, подобная приведенной выше, может сделать вашего пользователя уязвимым для CSRF-атак (что, по общему признанию, теоретически, но это может произойти; см. предотвращение csrf в php ).

0 голосов
/ 17 декабря 2011

Вы действительно хотите unlink() файл при клике?

Предположим, что пользователь решает, что на самом деле он не хочет удалять файл, и снова щелкает поле?

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

0 голосов
/ 17 декабря 2011

Используйте функцию отмены связи для удаления файла. Предположим, что ваш var $ rawlog - это путь к файлу:

unlink($rawlog);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...