Последние учебники веб-разработки
×

PHP Руководство

PHP ГЛАВНАЯ PHP вступление PHP устанавливать PHP Синтаксис PHP переменные PHP Echo / Версия для печати PHP Типы данных PHP Строки PHP Константы PHP операторы PHP If...Else...Elseif PHP Switch PHP В то время как Loops PHP Для Loops PHP функции PHP Массивы PHP Сортировка массивов PHP Суперглобальные

PHP обращение

PHP форма обращение PHP форма Проверка PHP форма необходимые PHP форма URL/E-mail PHP форма полный

PHP продвинутый

PHP Массивы Мульти PHP Дата и время PHP Включают PHP файл обращение PHP файл Открыть / Read PHP файл Создание / запись PHP файл Загрузить PHP Cookies PHP Sessions PHP фильтры PHP Filters продвинутый PHP Ошибка обращение PHP исключение

MySQL Database

MySQL База данных MySQL соединение MySQL Create DB MySQL Create Таблица MySQL Insert Data MySQL Получить Последняя ID MySQL Вставка нескольких MySQL Prepared MySQL Select Data MySQL Delete Data MySQL Update Data MySQL Limit Data

PHP - XML

PHP XML Парсеры PHP SimpleXML Parser PHP SimpleXML - Get PHP XML Expat PHP XML DOM

PHP - AJAX

AJAX вступление AJAX PHP AJAX База данных AJAX XML AJAX Live Search AJAX RSS Reader AJAX Голосование

PHP Examples

PHP Примеры PHP викторина PHP сертификат

PHP Справка

PHP массив PHP Календарь PHP Дата PHP каталог PHP Ошибка PHP Файловая система PHP Фильтр PHP FTP PHP HTTP PHP Libxml PHP почта PHP математический PHP Разное PHP MySQLi PHP SimpleXML PHP строка PHP XML PHP Zip PHP Часовые пояса

 

PHP 5 форма проверки


Это и последующие главы показывают, как использовать PHP для проверки данных формы.


PHP Form Validation

Подумайте SECURITY при обработке PHP форм!

На этих страницах будут показаны, как обрабатывать PHP форму с учетом требований безопасности. Правильная проверка данных формы важно защитить свою форму от хакеров и спамеров!

HTML форма, которую мы будем работать в этих главах, содержит различные поля ввода: обязательные и дополнительные текстовые поля, радио-кнопки, и кнопка представить:

Эти правила проверки для формы выше, являются следующими:

поле правила проверки
имя Необходимые. + Должен содержать только буквы и пробелы
Эл. почта Необходимые. + Должен содержать действительный адрес электронной почты (with @ and .)
Веб-сайт Необязательный. Если присутствует, то он должен содержать действительный URL
Комментарий Необязательный. Поле ввода Многоканальный (textarea)
Пол Необходимые. Необходимо выбрать один

Во-первых, мы будем смотреть на простой HTML код для формы:


Текстовые поля

В имя, адрес электронной почты и поля веб-сайта являются элементы ввода текста, а поле комментария является текстовое поле. HTML код выглядит следующим образом:

Name: <input type="text" name="name">
E-mail: <input type="text" name="email">
Website: <input type="text" name="website">
Comment: <textarea name="comment" rows="5" cols="40"></textarea>

Радио-кнопки

Гендерные поля являются селективными кнопками и HTML-код выглядит следующим образом:

Gender:
<input type="radio" name="gender" value="female">Female
<input type="radio" name="gender" value="male">Male

Форма элемента

HTML код формы выглядит следующим образом:

<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">

Когда форма отправлена, данные формы отправляются с помощью метода = «пост».

Что такое переменная $ _SERVER [ "PHP_SELF"]?

$ _SERVER [ «PHP_SELF»] супер глобальная переменная, которая возвращает имя файла в данный момент скрипта.

Таким образом, $ _SERVER [ «PHP_SELF»] направляет представленные данные формы на саму страницу, вместо того, чтобы прыгать на другую страницу. Таким образом, пользователь получит сообщение об ошибке на той же странице, что и формы.

Что такое htmlspecialchars() функции?

htmlspecialchars() функция преобразует специальные символы в HTML сущности. Это означает, что он заменит HTML символы, такие как <и> с & л; и & GT ;. Это предотвращает злоумышленников от использования кода, вводя HTML или Javascript код (Cross-site Scripting attacks) в формах.


Большое Обратите внимание на PHP Форма безопасности

$ _SERVER [ «PHP_SELF»] переменная может быть использована хакерами!

Если PHP_SELF используется в вашей странице , то пользователь может ввести косую черту (/) , а затем некоторый Cross Site Scripting (XSS) команду для выполнения.

Межсайтовый скриптинг (XSS) представляет собой тип уязвимости компьютерной безопасности , как правило , находятся в веб - приложениях. XSS позволяет злоумышленникам инъекционные сценарий на стороне клиента в веб - страниц , просмотренных другими пользователями.

Предположим , что мы имеем следующий вид страницы с именем "test_form.php" :

<form method="post" action="<?php echo $_SERVER["PHP_SELF"];?>">

Теперь, если пользователь входит в нормальный URL в адресной строке , как "http://www.example.com/test_form.php" , приведенный выше код будет переведен на:

<form method="post" action="test_form.php">

Все идет нормально.

Тем не менее, считаю, что пользователь вводит следующий URL-адрес в адресной строке:

http://www.example.com/test_form.php/%22%3E%3Cscript%3Ealert('hacked')%3C/script%3E

В этом случае, приведенный выше код будет переведен на:

<form method="post" action="test_form.php/"><script>alert('hacked')</script>

Этот код добавляет тег сценария и команду тревоги. И при загрузке страницы, код JavaScript будет выполнена (the user will see an alert box) с (the user will see an alert box) . Это всего лишь простой и безобидный пример того, как переменная PHP_SELF может быть использована.

Имейте в виду , что любой код JavaScript может быть добавлен внутри <script> тег! Хакер может перенаправить пользователя в файл на другом сервере, и этот файл может содержать вредоносный программный код, который может изменять глобальные переменные или представить форму на другой адрес, чтобы сохранить пользовательские данные, например.


Как избежать $ _SERVER [ "PHP_SELF"] подвиги?

$ _SERVER [ "PHP_SELF"] Подвиги можно избежать, используя htmlspecialchars() функции.

Форма код должен выглядеть следующим образом:

<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">

htmlspecialchars() функция преобразует специальные символы в HTML сущности. Теперь, если пользователь пытается использовать переменную PHP_SELF, это приведет к следующему выходу:

<form method="post" action="test_form.php/&quot;&gt;&lt;script&gt;alert('hacked')&lt;/script&gt;">

Подвиг попытка не удалась, и никакого вреда не будет сделано!


Проверка данных формы с PHP

Первое , что мы будем делать это , чтобы передать все переменные через РНР htmlspecialchars() функция.

Когда мы используем htmlspecialchars() функции; Затем, если пользователь пытается отправить следующее в текстовое поле:

<Скрипт> место. href('http://www.hacked.com') </ скрипт>

- это не будет выполнено, так как он будет сохранен как HTML-код убежали, как это:

& Lt; & сценарий GT; местоположение. href('http://www.hacked.com') & л; / & сценарий GT;

Код теперь безопасно отображаться на странице или в сообщении электронной почты.

Мы также будем делать еще две вещи, когда пользователь отправляет форму:

  1. Strip ненужные символы (extra space, tab, newline) из пользовательского ввода данных (with the PHP trim() функции)
  2. Удалить обратной косой черты (\) из пользовательского ввода данных (with the PHP stripslashes() функция)

Следующим шагом является создание функции , которая будет делать все проверки для нас (which is much more convenient than writing the same code over and over again) , (which is much more convenient than writing the same code over and over again) один и (which is much more convenient than writing the same code over and over again) .

Мы будем называть функцию test_input() .

Теперь мы можем проверить каждую переменную $ _POST с test_input() функции, и сценарий выглядит следующим образом :

пример

<?php
// define variables and set to empty values
$name = $email = $gender = $comment = $website = "";

if ($_SERVER["REQUEST_METHOD"] == "POST") {
  $name = test_input($_POST["name"]);
  $email = test_input($_POST["email"]);
  $website = test_input($_POST["website"]);
  $comment = test_input($_POST["comment"]);
  $gender = test_input($_POST["gender"]);
}

function test_input($data) {
  $data = trim($data);
  $data = stripslashes($data);
  $data = htmlspecialchars($data);
  return $data;
}
?>
Выполнить пример »

Обратите внимание на то, что в начале сценария, мы проверяем форма была отправлена ​​ли с помощью $ _SERVER [ «REQUEST_METHOD»]. Если REQUEST_METHOD является POST, то форма была отправлена ​​- и это должно быть подтверждено. Если он не был представлен, пропустить проверку и отобразить пустую форму.

Тем не менее, в приведенном выше примере, все входные поля являются необязательными. Скрипт работает отлично, даже если пользователь не вводит никаких данных.

Следующий шаг, чтобы сделать поле ввода необходимого и создавать сообщения об ошибках, если это необходимо.