Есть задача. Страница (страница подтверждения удаления файла) содержит сообщение «Вы действительно хотите удалить этот файл?» и форма с двумя радио-кнопками выбора и кнопкой отправки формы (submit).
При выборе и отправке первого варианта, вместо стандартного сообщения появляется «Файл успешно удалён» и через пять секунд перенаправление на files.php.
При выборе и отправке второго — просто перенаправление на files.php.
Всё очень желательно реализовать средствами php!
Вот такой код я нацарапал, но он не работает :(
$article = simplexml_load_file('../xml/' . $_GET['id'] . '.xml');
if (isset($_POST['select'])) {
$_POST['select'] = $select;
$select = 0;
if ($select == 'no') {
header('location: files.php');
}
elseif ($select == 'yes') {
echo 'Страница' . $article->headline . ' удалена!';
$filename = '../xml/' . $_GET['id'] . '.xml';
unlink($filename);
sleep(5);
header('location: files.php');
}
else {
echo 'Вы действительно хотите удалить статью <em>' . $article->headline . '</em>?';
}
}
echo '<form action="" method="post">
<p><input type="radio" name="select" id="no" value="no" /><label for="no"> Отмена</label></p>
<p><input type="radio" name="select" id="yes" value="yes" /><label for="yes"> Удалить</label></p>
<input type="submit" name="submit" id="submit" value="Подтвердить" />
</form>';
А не работает вот что: при переходе на эту страницу не отображается сообщение «Вы действительно хотите удалить этот файл?»; при выборе обоих вариантов, просто идёт перенаправление, не выводится сообщение «Файл успешно удалён» (в первом случае) и не удаляется сам файл.
Давайте разбираться с Вашим кодом
if (isset($_POST['select'])) { // Проверка, что произошел запуск обработчика формы и была нажата хоть одна радиокнопка
$_POST['select'] = $select; // строка не поддающаяся расшифровке. Что имелось в виду?
$select = 0; // Присвоили переменной $select значение 0
if ($select == 'no') { // проверка равна ли переменная $select "no" (а она не равна, потому, что мы присвоили ей значение 0)
header('location: files.php'); // перенаправляем на другую страницу
}
elseif($select == 'yes') { // сюда мы тоже не попадем
echo 'Страница'.$article - > headline.
' удалена!'; // выводим сообщение
$filename = '../xml/'.$_GET['id'].'.xml'; // формируем имя файла, при этом форма у нас ушла POST запросом и никаких GET параметров мы не передавали
unlink($filename); // удаляем файл
sleep(5); // делаем на сервере паузу в 5 секунд. Пользователь по прежнему ничего не видит
header('location: files.php'); // пытаемся перенаправить на другую страницу, хотя на странице уже был вывод данных и сервер нас пошлет и мы отгребем "headers already sent"
}
else { // собственно запуск текущей страницы
echo 'Вы действительно хотите удалить статью <em>'.$article - > headline.
'</em>?';
}
}
В общем, как Вы поняли, работать Ваш код не может. Как его нужно модифицировать?
if (isset($_POST['select'])) { // Проверка, что произошел запуск обработчика формы и была нажата хоть одна радиокнопка
switch($_POST['select']) {
case 'no':
header('location: files.php');
exit;
case 'yes':
$filename = '../xml/'.$_POST['id'].'.xml';
unlink($filename); // удаляем файл
header('location: wait.php?id=' . $_POST['id']);
exit;
}
}
// собственно запуск текущей страницы
echo 'Вы действительно хотите удалить статью <em>'.$article - > headline. '</em>?';
echo '<form action="" method="post">
<p><input type="radio" name="select" id="no" value="no" /><label for="no"> Отмена</label></p>
<p><input type="radio" name="select" id="yes" value="yes" /><label for="yes"> Удалить</label></p>
<input type="hidden" name="id" value="'.$_GET['id'] . // добавляем hidden поле для передачи id файла
'" />
<input type="submit" name="submit" id="submit" value="Подтвердить" />
</form>';
Страница wait.php
должна вывести сообщение о том, что файл удален, запустить JavaScript сценарий, который через 5 секунд сделает перенаправление на files.php или сделает перенаправление через <meta http-equiv="refresh"
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Какие существуют виды рекламных бордов и как выбрать подходящий?
Есть файл с данными из которого нужно выбрать определенные данные, сформировать JSON и отправить по запросу на клиентПока это выглядит так