|
Последние статьи
Подписка на рассылку |
Получение, проверка и обработка данных на PHP
Данные переданные HTML-формой в PHP будут размещены в массивах $_GET, $_POST, $_REQUEST (подробнее PHP и методы передачи данных GET и POST). Форму будет заполнять пользователь, и не известно, что он может ввести в поля формы. Может пропустить одно или несколько полей, введет некорректные данные, например, нужно будет ввести число, а пользователь введет какой-нибудь текст. К получаемым данным нужно очень осторожно относиться, особенно, если информация сохраняется в базе данных, используется для работы с файловой системой, а так же отображается пользователям сайта (например, пользователь может отправить вредоносный скрипт, написанный на javascript, который в дальнейшем может быть загружен в браузер другого посетителя сайта и нанести вред его компьютеру). Для проверки и обработки данных в PHP есть специальные функции. Ознакомимся с ними. Функция isset($имя_переменной) возвращает true, если переменная объявлена даже без присваивания значения. Пример использования Код if (isset($_GET["number"])) { //Переменная существует, выполняем нужные действия с ней ... } else { //Переменная не существует, поэтому выполнять действия с ней нельзя. Можно вывести предупреждение пользователю echo ("Не указано значение number!"); ... } Функция empty($имя_переменной) возвращает true, если значение переменной равно нулю или пустой строке либо переменная не объявлена. Пример использования функции Код if (empty($_POST["code"])) { //переменная не объявлена или ее значение равно нулю, сообщим об этом пользователю echo ("Не указано значение поля Code!"); } else { //переменная существует и ее значение не равно нулю ... }
Функция strip_tags() позволяет удалить из текста все дескрипторы (теги), но можно указать какие из них следует оставить. Так для удаления всех тегов нужно записать Код $text=strip_tags($text); Код $text=strip_tags($text,"<a><b>");//оставим в тексте теги A и B.
Например Код $text=htmlspecialchars($text); $text=htmlspecialchars($text,ENT_QUOTES); Код $text=addslashes($text); Код $text=stripslashes ($text); Очень часто пользователи в начале или в конце строки случайно вводят пробелы. Эти пробелы практически не нужны, и поэтому их можно удалить. Удалить эти пробелы поможет функция trim(). Например Код $text=trim($text); Еще одна не маловажная деталь при получении данных от пользователя: это информирование пользователя о допущении ошибки при заполнении одной или нескольких полей формы. Причем нужно отобразить форму с теми данными, которые он ввел. Представьте, что на сайте пользователю нужно заполнить какую-либо форму, в которой несколько полей, например, 10. И если пользователь случайно не заполнит одно поле или заполнит его не корректно, и после отправки формы отобразится пустая форма с сообщением об ошибке, то ему придется заново заполнять всю форму, а не исправить лишь какую-то часть данных. В этом случае есть большая вероятность, что пользователь покинет сайт, сочтя его крайне не доброжелательным к пользователям, заставляя тратить лишнее время и усилия для предоставления информации. Код <html> <head> <title>Получение, проверка и обработка данных на PHP</title> </head> <body> <?php $t=""; $nic=""; $num=""; $error=false; $on_submit=false; $pol=""; $pol_m=""; $pol_j=""; $pol_x=""; $mas_pol=array ("m"=>"мужской","j"=>"женский","x"=>"еще не поняло"); $selected=" selected='selected' "; $coment=""; if (!empty($_POST["onsubmit"])) { //форма была отправлена, проверим данные $on_submit=true; if (empty($_POST["nic"])) { $t.="<div>Вы не указали свое имя или ник!</div>"; $error=true; } else $nic=$_POST["nic"]; if (empty($_POST["number"])) { $t.="<div>Вы не указали свой возраст!</div>"; $error=true; } else { $num=$_POST["number"]; if (!is_numeric($num)) { $t.="<div>Возраст нужно написать цифрами!</div>"; $error=true; } } if (empty($_POST["pol"]) || $_POST["pol"]=="none") { $t.="<div>Укажите свой пол!</div>"; $error=true; } else { $pol=$_POST["pol"]; switch ($pol) { case ("m"):$pol_m=$selected;break; case ("j"):$pol_j=$selected;break; case ("x"):$pol_x=$selected;break; } } if (empty($_POST["coment"])) { $t.="<div>Вы не написали комментарий!</div>"; $error=true; } else $coment=$_POST["coment"]; } if ($on_submit && !$error) { //если форма была отправлена и ошибок при заполнении нет, то отображаем поученные данные $t.="Получены следующие данные<br/>Ваше имя: ".htmlspecialchars($nic,ENT_QUOTES); $t.="<br/>Ваш возраст: ".htmlspecialchars($num,ENT_QUOTES); $t.="<br/>Ваш пол: ".$mas_pol[$pol]; $t.="<br/>Комментарий: ".htmlspecialchars($coment,ENT_QUOTES); } else { //если форма не отправлялась или была отправлена, но при заполнении полей были допущены ошибки, то выводим форму //причем, если форма была отправлена (с некорректным заполнением полей), то выводим ее с теми данными, которые ввел пользователь $t.="<form action='text.php' method='post'> Ваше имя или ник<br/> <input type='text' name='nic' value='".htmlspecialchars($nic,ENT_QUOTES)."'><br/> Сколько вам лет (цифрами)<br/> <input type='text' name='number' value='".htmlspecialchars($num,ENT_QUOTES)."'> <br/> Ваш пол<br/> <select name='pol'> <option value='none'>выберите...</option> <option value='m' ".$pol_m.">мужской</option> <option value='j' ".$pol_j.">женский</option> <option value='x' ".$pol_x.">еще не поняло</option> </select> <br/> Напишите комментарий<br/> <textarea name='coment'>".htmlspecialchars($coment,ENT_QUOTES)."</textarea> <br/> <input type='submit' value='Отправить'> <input type='hidden' name='onsubmit' value='on'> </form> "; } echo ($t); ?> </body> </html> При правильном заполнении формы, данные будут отображены в браузере без HTML-формы. Если же форма будет заполнена некорректно, то будет выведено соответствующее сообщение об ошибке. Комментарии к статье Всего комментариев: 6 Прикольно работает.. главное понятно! особенно прикол с выбором пола понравился))))) Надо было еще поставить "крашенный" E-mail: datogug@yandex.ru otlichnaya statya dolgo v neter iskal E-mail: terr@mail.ru В какую папку записываются данные пользователя с формы text.php ? Предыдущие статьиСледующие статьи
|
Новости сайта
Облако тегов cms css div document.write font html html-форма img indexof innerhtml input javascript onclick php php и get php и post sms-биллинг sms-оплата xhtml анализ текста бесплатная cms бесплатная система управления сайтом бесплатно php скрипт гиперссылка дата дизайн динамические эффекты домен доска объявлений закладки интернет-магазин меню модуль cms оптимизация основы php полезные ссылки раскрутка сайта рисунки php сайт сервис скачать бесплатно скачать бесплатно php скрипт скрипт доски объявлений скрипты создать сайт создать сайт бесплатно таблицы тема управление cms установка cms хостинг часы Также интересно будет посмотреть
Все о создании и раскрутке сайтов на Все секреты успешного сайта.
Подробнее: Создание сайтов и Раскрутка сайта Много полезной и интересной информации о разработке сайтов ждет вас! Помощь сайту
Платежные реквизиты для помощи сайту доступны на странице помощь проекту
|