Вывод сообщений php
Есть задача. Страница (страница подтверждения удаления файла) содержит сообщение «Вы действительно хотите удалить этот файл?» и форма с двумя радио-кнопками выбора и кнопкой отправки формы (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 'Вы действительно хотите удалить статью ' . $article->headline . '?'; > > echo ' ';
А не работает вот что: при переходе на эту страницу не отображается сообщение «Вы действительно хотите удалить этот файл?»; при выборе обоих вариантов, просто идёт перенаправление, не выводится сообщение «Файл успешно удалён» (в первом случае) и не удаляется сам файл.
Отслеживать
задан 20 ноя 2017 в 12:59
87 2 2 серебряных знака 14 14 бронзовых знаков
Какая у вас ошибка? Что конкретно у вас не работает? Переформулируйте, пожалуйста, вопрос, что бы на него можно было ответить
Как вывести сообщение пользователю?
Здравствуйте.
Суть вот в чём, к примеру, если пользователь при заполнении полей формы не заполнил нужное поле или ввел туда что-то не то, сообщение об этом должно отображаться на странице для отображения сообщений.
за отправку сообщения отвечает функция:
function messageSend($messageType, $place)< $messageArray = array( "Empty in ", "Set your password ", "Bad symbols in ", "Too short value in ", "Too long value in ", "Fill in the field ", "This page does not exist!", "" ); $_SESSION['reportMessage'] = $messageArray[$messageType].$place ; header('Location: /report'); exit(); >
За прием и отображение, функция:
function messageShow() < if ($_SESSION['reportMessage'])< echo $_SESSION['reportMessage']; $_SESSION['reportMessage'] = array(); exit(); >else < header('Location:/'); exit(); >>
Т. е. функция отправки сообщения редиректит на страницу вывода и страница вывода уже отображает само сообщение.
Зачем редирект(?) — если юзер ошибся случайно, то для исправления ошибки ему будет достаточно нажать в браузере кнопку «назад» и он попадет обратно на страницу с формой в полях которой уже будет введено все вместе с ошибкой. Ему будет достаточно только исправить ошибку и все ок. А если перезагрузить страницу с формой при выводе сообщения об ошибке то все поля формы обнуляться и юзеру прийдется вводить все заново.
Так то оно все работает, вот только если перезагрузить страницу вывода сообщений после вывода сообщения, то ругается мол — Warning: Cannot modify header information — headers already sent (что как-бы понятно).
Можно конечно сделать как-то так:
function messageShow() < if ($_SESSION['reportMessage'])< echo $_SESSION['reportMessage']; $_SESSION['reportMessage'] = array(); exit(); >else < echo 'Привет, это страница для отображения сообщений о Ваших ошибках. '; exit(); >>
И все будет норм.. Но, хотелось бы что бы эту страницу вообще не возможно было открыть если нету никакого сообщения в сессии. Логичнее что-ли.
Подскажите, как это можно организовать что бы не ругалось?
Думал еще что можно значения полей записывать в $_SESSION, выводить сообщение на странице самой формы после перезагрузки страницы с формой и при этом вставлять в поля то что было записано в $_SESSION.. А после успешной обработки формы обнулять $_SESSION.
Но как то не охота ганять лишний раз непонятную инфу через сервер/скрипт(хотя, может и ничего страшного если юзать htmlentities и т.п.). Пока что все сводиться к тому что это единственный вариант(хоть он муторный и стремный).
В общем надеюсь на Ваш совет, может упустил что-то по запарке.
- Вопрос задан более трёх лет назад
- 714 просмотров
Hello, World! — Основы PHP
В этом уроке мы сразу напишем первую программу. Мы узнаем, какие команды понадобятся для этого и какие теги нужно использовать, чтобы программа, которая выполняет код, восприняла его. Также узнаем, зачем в коде нужны комментарии.
Как написать простую программу
Чтобы написать программу и вывести результат на экран, используют два способа:
- Через команду echo
- Через команду print_r()
Разберем каждую подробнее.
Пишем программу через echo
Напишем программу «Hello, World!». Она будет выводить на экран текст:
echo 'Hello, World!'; // => Hello, World!
Вывод на экран выполняется с помощью специальной команды echo . После нее в одиночных кавычках указывается строка для вывода. В конце обязательно ставим точку с запятой.
Для удобства мы будем показывать результат запуска строк кода так: => РЕЗУЛЬТАТ .
Пишем программу через print_r()
Другой способ вывести строку на экран — функция print_r() :
print_r('Hello, World!'); // => Hello, World!
В этом случае строка указывается в скобках сразу после имени функции. В конце также нужно ставить ; .
В простых ситуациях между этими конструкциями нет разницы. Можно использовать любой способ. А там, где на экран нужно выводить не просто числа или строки, а, например, массивы, echo не сможет этого сделать, а print_r() все выведет.
Разберем другие особенности вывода результата на экран.
Зачем использовать теги
Чтобы интерпретатор — программа, которая выполняет код, — восприняла его не как обычный текст, любой код на PHP нужно оборачивать в конструкцию . Это особенность данного языка программирования.
— закрывающий тег. PHP позволяет не указывать закрывающую часть ?> . А руководство по оформлению кода PSR-12 запрещает ее указывать.
Теперь разберем еще один элемент кода — комментарии. Они особенно важны для разработчиков.
Зачем нужны комментарии
Кроме кода в файлах с исходным кодом могут находиться комментарии. Этот текст не является частью программы. Он нужен программистам для пометок. С их помощью добавляют пояснения, например, как работает код, какие ошибки нужно поправить или не забыть что-то позже добавить.
Комментарии в PHP бывают двух видов:
- Однострочные комментарии — начинаются с // . После этих символов может следовать любой текст, вся строка не будет анализироваться и исполняться:
// For Winterfell! // For Lanisters! // Комментарий может находиться на строке после какого-нибудь кода print_r('I am the King'); // For Lannisters!
- Многострочные комментарии — начинаются с /* и заканчиваются на */ . Между ними каждая строка начинается с символа * :
/* * The night is dark and * full of terrors. */ print_r('I am the King');
Выводы
В этом уроке мы научились создавать простую программу на языке PHP, которая выводит на экран текст «Hello, World!». Мы узнали, что для выводы результата можно использовать два варианта: через команды echo или print_r() .
Также мы познакомились с тегами, без которых интерпретатор будет воспринимать код, как обычный текст. Еще мы узнали, что внутри кода можно оставлять комментарии, которые не будут являться частью кода. Они нужны, чтобы разработчики могли оставлять для себя и коллег пометки по работе с кодом.
Остались вопросы? Задайте их в разделе «Обсуждение»
Вам ответят команда поддержки Хекслета или другие студенты
PHP: Привет, Мир!
В этом уроке мы сразу напишем первую программу. Мы узнаем, какие команды понадобятся для этого и какие теги нужно использовать, чтобы программа, которая выполняет код, восприняла его. Также узнаем, зачем в коде нужны комментарии.
Как написать простую программу
Чтобы написать программу и вывести результат на экран, используют два способа:
- Через команду echo
- Через команду print_r()
Разберем каждую подробнее.
Пишем программу через echo
Напишем программу «Hello, World!». Она будет выводить на экран текст:
Hello, World!
Вывод на экран выполняется с помощью специальной команды echo . После нее в одиночных кавычках указывается строка для вывода. В конце обязательно ставим точку с запятой.
Для удобства мы будем показывать результат запуска строк кода так: => РЕЗУЛЬТАТ .
Пишем программу через print_r()
Другой способ вывести строку на экран — функция print_r() :
Hello, World!
В этом случае строка указывается в скобках сразу после имени функции. В конце также нужно ставить ; .
В простых ситуациях между этими конструкциями нет разницы. Можно использовать любой способ. А там, где на экран нужно выводить не просто числа или строки, а, например, массивы, echo не сможет этого сделать, а print_r() все выведет.
Задание
Наберите в редакторе код из задания символ в символ и нажмите «Проверить».
Внимание: если вы напишете heLLo, woRld! вместо Hello, World! , то это будет считаться другим текстом, потому что заглавные и строчные буквы — разные символы. Размер буквы называют регистром и говорят: регистр — важен! Это касается почти всего в коде, поэтому привыкайте всегда обращать внимание на регистр.
Упражнение не проходит проверку — что делать?
Если вы зашли в тупик, то самое время задать вопрос в «Обсуждениях». Как правильно задать вопрос:
- Обязательно приложите вывод тестов, без него практически невозможно понять что не так, даже если вы покажете свой код. Программисты плохо исполняют код в голове, но по полученной ошибке почти всегда понятно, куда смотреть.
В моей среде код работает, а здесь нет
Тесты устроены таким образом, что они проверяют решение разными способами и на разных данных. Часто решение работает с одними входными данными, но не работает с другими. Чтобы разобраться с этим моментом, изучите вкладку «Тесты» и внимательно посмотрите на вывод ошибок, в котором есть подсказки.
Мой код отличается от решения учителя
Это нормально , в программировании одну задачу можно выполнить множеством способов. Если ваш код прошел проверку, то он соответствует условиям задачи.
В редких случаях бывает, что решение подогнано под тесты, но это видно сразу.
Прочитал урок — ничего не понятно
Создавать обучающие материалы, понятные для всех без исключения, довольно сложно. Мы очень стараемся, но всегда есть что улучшать. Если вы встретили материал, который вам непонятен, опишите проблему в «Обсуждениях». Идеально, если вы сформулируете непонятные моменты в виде вопросов. Обычно нам нужно несколько дней для внесения правок.
Кстати, вы тоже можете участвовать в улучшении курсов: внизу есть ссылка на исходный код уроков, который можно править прямо из браузера.
