Latest web development tutorials
×

PHP курс

PHP курс PHP Краткое введение PHP устанавливать PHP грамматика PHP переменная PHP echo/print PHP Типы данных PHP постоянная PHP строка PHP операторы PHP If...Else PHP Switch PHP массив PHP Сортировка массива PHP Суперглобальные PHP While циркуляция PHP For циркуляция PHP функция PHP Магические Переменные PHP Пространства имен PHP Объектно-ориентированный

PHP форма

PHP форма PHP Аутентификация с помощью форм PHP форма - Обязательные для заполнения поля PHP форма - Проверка электронной почты и URL PHP Полный экземпляр формы PHP $_GET переменная PHP $_POST переменная

PHP Расширенный учебник

PHP Многомерные Массивы PHP дата PHP содержать PHP файл PHP Загрузка файлов PHP Cookie PHP Session PHP E-mail PHP безопасности E-mail PHP Error PHP Exception PHP фильтр PHP Расширенный фильтр PHP JSON

PHP 7 Новые возможности

PHP 7 Новые возможности

PHP база данных

PHP MySQL Краткое введение PHP MySQL подключение PHP MySQL Создание базы данных PHP MySQL Создание таблицы данных PHP MySQL Вставка данных PHP MySQL Вставка нескольких данных PHP MySQL Подготовленные выражения PHP MySQL Считывание данных PHP MySQL WHERE PHP MySQL ORDER BY PHP MySQL UPDATE PHP MySQL DELETE PHP ODBC

PHP XML

XML Expat Parser XML DOM XML SimpleXML

PHP & AJAX

AJAX Краткое введение AJAX PHP AJAX база данных AJAX XML AJAX Поиск в реальном времени AJAX RSS Reader AJAX голосование

PHP справочное руководство

PHP Array PHP Calendar PHP cURL PHP Date PHP Directory PHP Error PHP Filesystem PHP Filter PHP FTP PHP HTTP PHP Libxml PHP Mail PHP Math PHP Misc PHP MySQLi PHP PDO PHP SimpleXML PHP String PHP XML PHP Zip PHP Timezones PHP обработка изображений PHP RESTful

PHP Form Validation

В этой главе описывается, как использовать наши данные формы PHP, представленные проверки клиента.


PHP Form Validation

примечание При работе с PHP форме мы должны рассмотреть вопрос о безопасности.

В этой главе мы покажем вам безопасность данных PHP Form Processing, для того, чтобы предотвратить хакеров и спама, мы должны обеспечить проверку данных формы.

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

View Code >>

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

поле правила проверки
имя Must. + Содержат только буквы и пробелы
Электронная почта Must. + Должен быть действительный адрес электронной почты (включая @ 'и'. ')
сайт Must. Если он присутствует, он должен содержать действительный URL
замечание Must. Многоканальный поле ввода (текстовое поле)
пол Must. Вы должны выбрать

Во-первых, давайте посмотрим на простой HTML-кода формы:


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

"Имя", "Электронная почта", а поле "URL" является элементом ввода текста, в поле "Примечания" представляет собой текстовое поле. HTML-код следующим образом:

“名字”: <input type="text" name="name">
E-mail: <input type="text" name="email">
网址: <input type="text" name="website">
备注: <textarea name="comment" rows="5" cols="40"></textarea>

кнопка радио

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

性别:
<input type="radio" name="gender" value="female">女
<input type="radio" name="gender" value="male">男

элементы формы

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

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

Используйте этотметод = "пост" метод формы для отправки данных.

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

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

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

примечание Что такое htmlspecialchars () метод?

htmlspecialchars () для некоторых предопределенных символов в HTML-сущностей.

Предварительно определенные символы:

  • & (Амперсанд) становится & Amp;
  • "(Двойные кавычки) становится & Quot;
  • '(Single цитата) становится & # 039;
  • <(Меньше) становится & л;
  • > (Больше) становится & GT;


PHP форма требуется, чтобы вызвать внимание, где?

$ _SERVER [ "PHP_SELF"] переменные могут быть использованы хакерами!

Когда хакеры, использующие Cross-Site Scripting HTTP ссылку, чтобы атаковать, $ _ SERVER переменная [ "PHP_SELF"] будет имплантирован в сценарии сервера. Причина заключается в том, что межсайтовые файл сценария исполняемым присоединен к пути позади, $ _SERVER [ "PHP_SELF"] строка будет содержать ссылки HTTP, лежащие в основе кода JavaScript.

примечание XSS также известный как CSS (Cross-Site Script), межсайтовый атак сценариев. Злоумышленник вставить вредоносный веб - страницы в HTML - коде, когда пользователь просматривают страницу, встроенный Web внутри HTML код будет выполняться для достижения конкретной цели злоумышленника.

Укажите следующий вид файл с именем "test_form.php":

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

Теперь мы используем URL, чтобы отправить по указанному адресу "test_form.php", как показано в приведенном выше коде изменяется следующим образом:

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

Это хорошо.

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

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

Выше URL, будет интерпретироваться как следующий код и выполнить его:

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

Добавьте код тега сценария и добавьте команду предупреждения. При загрузке страницы будет выполнять код Javascript (пользователь увидит всплывающее окно). Это лишь простой пример, чтобы проиллюстрировать переменной PHP_SELF будет использоваться хакерами.

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


Как избежать $ _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 PHP.

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

<script>location.href('http://www.w3big.com')</script>

Код не будет выполнен, так как он будет сохранен как код HTML побег следующим образом:

&lt;script&gt;location.href('http://www.w3big.com')&lt;/script&gt;

Приведенный выше код является безопасным и может отображаться или вставить сообщение на странице.

Когда пользователь отправляет форму, мы будем делать следующие две вещи:

  1. Используйте PHP функцию обрезки () для удаления введенных пользователем данных ненужные символы (такие как: пробел, табуляция, символ новой строки).
  2. Использование PHP stripslashes () функцию, чтобы удалить обратный слеш пользовательский ввод данных (\)

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

Функция с именем test_input ().

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

примеров

<?php
// 定义变量并默认设置为空值
$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, форма будет представлена ​​- данные будут проверены. Если форма не будет представлен будет пропускать проверку и отображает пустой.

Используйте входные элементы в приведенных выше примерах являются необязательными, даже если пользователь не введет какие-либо данные могут отображаться неправильно.

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