Удаление файла при нажатии на кнопку (PHP)

Форум для тех кто начинает осваивать язык php.
Аватара пользователя
Slash
Администратор
Сообщения: 2207
Зарегистрирован: Сб авг 11, 2012 7:39 am
Поблагодарили: 81 раз

Удаление файла при нажатии на кнопку (PHP)

#1

Сообщение Slash » Вт фев 11, 2014 7:29 pm

Все привет! Сейчас я хочу показать, как удалить файл при нажатии на кнопку button. Удалять мы будем архив file.zip, который расположен в корне нашего сайта. То есть не мы будем удалять, а функция unlink(), мы всего лишь нажмем на кнопку, этим мы отдадим команду на удаление, а функция сделает свое дело.
Теперь не много о функции unlink(): эта функция предназначена для удаления файла. В случаи успешной операции возвращает TRUE, и вернет FALSE если произошла ошибка.

И так пишем кнопку:

Код: Выделить всё

<input type="button" value="Удалить" onclick="if(confirm('Вы действительно хотите удалить файл?'))location.href='index.php?p=del';" /> 
После нажатия на эту кнопку, придется подтвердить свое действие, либо отменить, в маленьком окне. После подтверждения переходим по адресу: index.php?p=del, где собственно начинает работу скрипт. А вот и сам скрипт:

Код: Выделить всё

if (isset($_GET['p'])) {               #Проверяем существует ли переменная (p)
    if ($_GET['p'] == 'del') {         #Создаем адрес в виде (p=del)
        $file = 'file.zip';            #Заносим имя файла в переменную

        unlink($file);                 #Удаляем архив
        header("location: index.php"); #Переходим на главную страницу
    }
}
В общем-то и все, но как видите запрос на удаление у нас проходит по простому адресу, который может ввести любой пользователь и удалить файл. Что бы этого не произошло необходимо сделать проверку прав на удаление файла, например после строчки:

Код: Выделить всё

    if ($_GET['p'] == 'del') {         #Создаем адрес в виде (p=del)        
добавляем такой код:

Код: Выделить всё

        if (!isset($_SESSION['login']) || !isset($_SESSION['id'])) {
            header("location: index.php");
        }
Теперь если неавторизованный пользователь попытается перейти по адресу index.php?p=del, то он не пройдет проверку и его перебросит на главную страницу, удаление файла не произойдет. Перенаправление на другую страницу можно заменить сообщением о нехватке прав доступа на удаление, для этого в коде проверке меняем строчку:

Код: Выделить всё

            header("location: index.php"); 
на:

Код: Выделить всё

            echo "У Вас недостаточно прав для удаления файла."; 
Код проверки авторизации работает не со всеми скриптами, очень возможно, что у Вас он будет совсем другой.

Реклама

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 0 гостей