Вредоносное ПО (malware) - это назойливые или опасные программы,...
Последнее обновление: 1.11.2015
Одним из основных способов передачи данных веб-сайту является обработка форм. Формы представляют специальные элементы разметки HTML, которые содержат в себе различные элементы ввода - текстовые поля, кнопки и т.д. И с помощью данных форм мы можем ввести некоторые данные и отправить их на сервер. А сервер уже обрабатывает эти данные.
Создание форм состоит из следующих аспектов:
Создание элемента в разметке HTML
Добавление в этот элемент одно или несколько поле ввода
Установка метода передачи данных: GET или POST
Установка адреса, на который будут отправляться введенные данные
Итак, создадим новую форму. Для этого определим новый файл form.php , в которое поместим следующее содержимое:
Вход на сайт
Логин:
Пароль:
Атрибут action="login.php" элемента form указывает, что данные формы будет обрабатывать скрипт login.php , который будет находиться с файлом form.php в одной папке. А атрибут method="POST" указывает, что в качестве метода передачи данных будет применяться метод POST.
Теперь создадим файл login.php , который будет иметь следующее содержание:
Чтобы получить данные формы, используется глобальная переменная $_POST . Она представляет ассоциативный массив данных, переданных с помощью метода POST. Используя ключи, мы можем получить отправленные значения. Ключами в этом массиве являются значения атрибутов name у полей ввода формы.
Так как атрибут name поля ввода логина имеет значение login (), то в массиве $_POST значение этого поля будет представлять ключ "login": $_POST["login"]
И поскольку возможны ситуации, когда поле ввода будет не установлено, например, при прямом переходе к скрипту: http://localhost:8080/login.php . В этом случае желательно перед обработкой данных проверять их наличие с помощью функции isset() . И если переменная установлена, то функция isset() возвратит значение true .
Теперь мы можем обратиться к форме:
И по нажатию кнопки введенные данные методом POST будут отправлены скрипту login.php :
Необязательно отправлять данные формы другому скрипту, можно данные формы обработать в том же файле формы. Для этого изменим файл form.php следующим образом:
Вход на сайт
Логин:
Пароль:
Большое значение в PHP имеет организация безопасности данных. Рассмотрим несколько простых механизмов, которые могут повысить безопасность нашего веб-сайта.
Но вначале возьмем форму из прошлой темы и попробуем ввести в нее некоторые данные. Например, введем в поле для логина "alert(hi);", а в поле для пароля текст "пароль":
После отправки данных в html разметку будет внедрен код javascript, который выводит окно с сообщением.
Чтобы избежать подобных проблем с безопасностью, следует применять функцию htmlentities() :
If(isset($_POST["login"]) && isset($_POST["password"])){
$login=htmlentities($_POST["login"]);
$password = htmlentities($_POST["password"]);
echo "Ваш логин: $login
Ваш пароль: $password";
}
И даже после ввода кода html или javascript все теги будут экранированы, и мы получим следующий вывод:
Еще одна функция - функция strip_tags() позволяет полностью исключить теги html:
If(isset($_POST["login"]) && isset($_POST["password"])){
$login=strip_tags($_POST["login"]);
$password = strip_tags($_POST["password"]);
echo "Ваш логин: $login
Ваш пароль: $password";
}
Результатом ее работы при том же вводе будет следующий вывод.
В этой статье подробно говорится об использовании переменной PHP _SELF.
Что за переменная PHP _SELF?Переменная PHP _SELF возвращает имя и путь к текущему файлу (относительно корня документа). Вы можете использовать эту переменную в атрибуте формы action. Существуют также некоторые нюансы, которые вы должны знать. Мы, конечно, никак не можем обойти стороной эти нюансы.
Давайте рассмотрим несколько примеров.
Echo $_SERVER["PHP_SELF"];
1) Предположим, что ваш php файл расположен по следующему адресу:
Http://www.yourserver.com/form-action.php
В этом случае переменная PHP _SELF будет содержать:
"/form-action.php"
2) Предположим, ваш php файл расположен по такому адресу:
Http://www.yourserver.com/dir1/form-action.php
PHP _SELF будет:
"/dir1/form-action.php"
PHP _SELF в атрибуте формы action. Для чего она там понадобилась?Обычно переменную PHP _SELF используют в атрибуте action тега form . В атрибуте action указывается адрес, по которому будет отослано содержание формы после подтверждения (клик пользователем по кнопке с type="submit"). Как правило это таже самая страница, с которой ушла форма.
Однако, если вы переименуете файл, на который ссылается форма, вам понадобится переименовать название файла в атрибуте action , иначе форма работать не будет.
Переменная PHP _SELF избавит вас от лишних исправлений, так как адрес страницы будет генерироваться автоматически, исходя из названия файла.
Допустим, у вас есть файл с формой form-action.php, и вы хотите, чтобы после подтверждения форма отправлялась на тот же самый файл. Обычно пишут так:
Но вы можете использовать переменную PHP _SELF вместо form-action.php. В этом случае код будет выглядеть: