Как сделать кнопку неактивной php

Обновлено: 03.07.2024

Я пробовал onclick() и всевозможные вещи, но это не привело к чему-либо полезному

ОТВЕТЫ

Ответ 1

Вы можете использовать JQuery/Ajax для отправки запроса нажатием кнопки или даже просто изменить URL-адрес браузера, чтобы перейти к php-адресу.

В зависимости от данных, отправленных в POST/GET, вы можете иметь оператор switch, выполняющий другую функцию.

Задание функции через GET

Итак, на стороне PHP вы можете иметь что-то вроде этого:

и вы можете сделать простейший запрос получения с помощью адресной строки в качестве тестирования:

Отправка данных

Запрос GET через JQuery

Запрос POST через JQuery

Запрос GET через расположение Javascript

Чтение данных (PHP)

Полезные ссылки

Ответ 2

Если вы хотите сделать запрос на сервер, вы должны использовать AJAX, чтобы вы могли отправлять свои параметры на сервер, и он может запускать любые php, которые вы хотите, с этими параметрами.

Пример с чистым javascript:

У вас может быть один файл с функциями, называемыми например functions.php

some.php

Ответ 3

Используйте ajax, простой пример,

HTML

Javascript

Ответ 4

Ответ 5

Используйте AJAX-запрос в вашем файле PHP, а затем отобразите результат на своей странице без перезагрузки.

Ответ 6

Это зависит от того, какую функцию вы хотите запустить. Если вам нужно что-то сделать на стороне сервера, например, запросить базу данных или установить что-то в сеансе или что-то, что не может быть сделано на стороне клиента, вам нужен AJAX, иначе вы можете сделать это на стороне клиента с помощью JavaScript. Не делайте работу сервера, когда вы можете делать то, что вам нужно делать на стороне клиента.


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

Сначала разберемся что это за зверь — неактивная кнопка. Это обычная кнопка у которой применен атрибут disabled. В коде это выглядит вот так:

В браузере это будет выглядеть вот так:


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

Как пользователи видят заблокированные элементы?

Всякий раз, когда что-либо в интерфейсе отключено, это означает, что что- то не так. Однако это, казалось бы, очевидное наблюдение может быть неочевидным на первый взгляд. Например, что, если вы хотите снять флажок, но интерфейс не позволяет это сделать? в чем именно проблема? Есть ли проблема с вашим интернет-соединением? Есть ли проблемы с правами пользователей? Вам нужно ждать и надеяться на лучшее или лучше обновить страницу? И если вы обновите страницу, все данные сохранятся в форме или исчезнут навсегда?

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

Вы, вероятно, будете вести себя так же. Почему? Оказывается, мы делаем это, чтобы избежать каких-либо сбоев или прерываний текущего процесса.

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

Причина всех этих проблем в том, что мы, как пользователи, не хотим терять состояние и данные неактивной области страницы.

Когда отключена активность только кнопки

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

Есть одна проблема, которая возникает, когда пользователи сталкиваются с неактивной кнопкой в ​​конце процесса, особенно на мобильных устройствах. Многие не понимают, была ли кнопка отключена с самого начала или есть что-то в их вводе, что фактически сделало ее отключенной в процессе.


Но если кнопка не станет активной, то скорее всего пользователь покинет страницу либо попытается обратится в службу поддержки. А дело может быть в том, что неправильно введен адрес электронной почты.

Ошибки неактивных кнопок

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

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


И тогда возникает вопрос о сроках. В какой момент мы должны включить отключенную кнопку? Большинство реализаций включают кнопку только в том случае, если все необходимые данные выглядят правильно сформированными или/и были проверены встроенным валидатором. Это определенно последний момент, чтобы щелкнуть выключателем, но как насчет ситуаций, когда это могло произойти раньше?

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


Итак, когда мы должны включать отключенную кнопку?

Большинство из нас согласятся, что первый вариант, вероятно, более очевиден, но только в том случае, если пользователь сможет определить возможность отправки документов позже. Второй вариант, вероятно, повысит конверсию и привлечет больше лидов.

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

Когда неактивные кнопки работают как надо?

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


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


Что сейчас произойдет? Вероятно, вы не захотите отправлять средства дважды. И вам не особенно нравятся переходы между вашим приложением с двухфакторной аутентификацией и интерфейсом банка — однако система отправила вам два кода подтверждения, и не очевидно, какой из них вы должны использовать для подтверждения платежа.

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

Такой вариант мы сделали на сайте по перевозке пассажиров для одного из наших клиентов:


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


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

Альтернатива неактивным кнопкам

Ниже представлена хорошая общая стратегия, которая всегда работает без каких-либо проблем с юзабилити:

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

Показывай только то, что можно использовать

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

Рассмотрите возможность удаления недоступных или неприменимых параметров. Покажите действия, которые актуальны и полезны только для пользователя в данный момент.


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

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

  1. Проверка в обработчике, т.е. пользователь заполняет нужные поля, отправляет форму, а дальше обработчик проверяет обязательные поля, и если какое либо поле не заполнено – возвращает пользователя обратно. Все просто, однако необходим механизм для передачи значений уже заполненных полей обратно в форму, который можно реализовать с помощью сессий, однако это не очень удобно.
  2. Проверка методами JavaScript – все гораздо проще (в плане работы самой формы). Задаем каждому полю событие onchange или любое другое реагирующее на действие пользователя (ну не onmouseover конечно, хотя наверное можно сделать даже забавно…), после которого написанная нами функция будет проверять , заполнены ли обязательные поля и разрешать или запрещать кнопку submit.

Первый вариант относится больше к разделу PHP, поэтому пока рассматриваться не будет. Рассмотрим более подробно второй. Первое что нам необходимо – сама форма:

Как видите, у кнопки Submit имеется атрибут disabled в значении disabled. Также у каждого поля формы есть событие onchange, при котором вызывается функция EnableButton(). Что же из себя представляет данная функция? Допустим, полями, обязательными для заполнения, являются field1 и field3, тогда функция EnableButton() будет выглядеть так:

К сожалению, я не нашел в JavaScript аналога PHP функции empty(), поэтому значения полей приходится сравнивать с пустой строкой. Еще на что стоит обратить внимание – оператор with (document.forms.form1). Для тех кто не знаком с JavaScript – выражение в скобках оператора with будет добавляться ко всем объектам, что позволяет значительно сократить запись функции. Без with EnableButton() выглядела бы следующим образом:

Согласитесь – довольно громоздко.
В продолжении стоить отметить, что атрибут disabled можно использовать для любого элемента формы. Пример – заполнение информации о фирме – юридический и почтовый адрес. Два поля для двух адресов, однако можно добавить флажок checkbox (- совпадает с юридическим), отметив который, пользователь укажет что поле почтовый адрес обрабатывать не надо и можно добавить ему атрибут disabled.

1. Кнопки - Тег

Тег создает на веб-странице кнопки и по своему действию напоминает результат, получаемый с помощью тега (с параметром type="button | reset | submit"). В отличие от этого тега, предлагает расширенные возможности по созданию кнопок. Например, на подобной кнопке можно размещать любые элементы HTML, в том числе изображения. Используя стили можно определить вид кнопки путем изменения шрифта, цвета фона, размеров и других параметров.

Теоретически, тег должен располагаться внутри формы, устанавливаемой элементом

Параметр TYPE Определяет тип кнопки, который устанавливает ее поведение в форме. По внешнему виду кнопки разного типа никак не различаются, но у каждой такой кнопки свои функции. Значение по умолчанию: button.

button - Обычная кнопка.

reset - Кнопка для очистки введенных данных формы и возвращения значений в первоначальное состояние.

Submit - Кнопка для отправки данных формы на сервер.
1.1. Кнопка (input type=button)
1.2. Кнопка с изображением (input type=image)

Кнопки с изображениями аналогичны по действию кнопке Submit, но представляют собой рисунок. Для этого задаем type=image и src="image.jpg".

Когда пользователь щелкнет где-нибудь на изображении, соответствующая форма будет передана на сервер с двумя дополнительными переменными - sub_x и sub_y. Они содержат координаты нажатия пользователя на изображение. Опытные программисты могут заметить, что на самом деле имена переменных, отправленных браузером, содержат точку, а не подчеркивание, но PHP автоматически конвертирует точку в подчеркивание.

1.3. Кнопка отправки формы (input type=submit)

Служит для отправки формы сценарию. При создании кнопки для отправки формы необходимо указать 2 атрибута: type="submit" и value="Текст кнопки". Атрибут name необходим, если кнопка не одна, а несколько и все они созданы для разных операций, например кнопки "Сохранить", "Удалить", "Редактировать" и т.д. После нажатия на кнопку сценарию передается строка имя=текст кнопки.

РНР-сценарий не требуется.

1.4. Массив кнопок (submit) для выбора варианта действий
2. Кнопка сброса формы (Reset)

При нажатии на кнопку сброса (reset), все элементы формы будут установлены в то состояние, которое было задано в атрибутах по умолчанию, причем отправка формы не производиться.

РНР-сценарий не требуется.

3. Флажок (checkbox)

Флажки checkbox предлагают пользователю ряд вариантов, и разрешает произвольный выбор (ни одного, одного или нескольких из них).

4. Переключатель(radio)

Переключатели radio предлагают пользователю ряд вариантов, но разрешает выбрать только один из них.

5. Текстовое поле (text)

При создании обычного текстового поля размером size и максимальной допустимой длины maxlength символов, атрибут type принимает значение text. Если указан параметр value, то поле будет отображать указанный в переменной value. При создании поля не забывайте указывать имя поля, т.к. этот атрибут является обязательным.

6. Поле для ввода пароля (password)

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

7. Скрытое текстовое поле (hidden)

Позволяет передавать сценарию какую то служебную информацию, не отображая её на странице.

8. Выпадающий список (select)

Тэг . Теги позволяют определить содержимое списка, а параметр value определяет значение строки. Если в теге указан параметр selected, то строка будет изначально выбранной. Параметр size задает, сколько строк будет занимать список. Если size равен 1, то список будет выпадающим. Если указан атрибут multiple, то разрешено выбирать несколько элементов из списка. Но эта схема практически не используется, а при size = 1 не имеет смысла.

Если необходимо создать выпадающий с предсказуемой последовательностью. Например, список с годами с 2000 по 2050. То используется следующий прием.

9. Многострочное поле ввода текста (textarea)

Многострочное поле ввода текста позволяет отправлять не одну строку, а сразу несколько. При необходимости можно указать атрибут readonly, который запрещает редактировать, удалять и изменять текст, т.е. текст будет предназначен только для чтения. Если необходимо чтобы текст был изначально отображен в многострочном поле ввода, то его необходимо поместить между тэгами .

Существует параметр wrap – задание переноса строк. Возможные значения:

off - отключает перенос строк;

virtuals - показывает переносы строк, но отправляет текст как он введен;

physical - переносы строк оставляются в исходном виде.

По умолчанию тег

создает пустое поле шириной в 20 символов и состоящее из 2 строк.

Для того, чтобы в многострочном текстовом поле соблюдалось html-форматирование (перенос строк по средством тега
или
), то используйте функцию nl2br():

10. Кнопка для загрузки файлов (browse)

Служит для реализации загрузки файлов на сервер. При создании текстового поля также необходимо указать тип поля type как "file".

СПОСОБЫ ОБЩЕНИЯ БРАУЗЕРА С СЕРВЕРОМ
Метод GET

Но можно не использовать пары ключ=значение если надо передать всего одну переменную для этого надо после знака вопроса написать ЗНАЧЕНИЕ (не имя) переменной.

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

Недостаток в том, что просто изменив параметры в адресной строке пользователь может повернуть ход сценария непредсказуемым образом, это создает огромную дыру в безопасности в сочетании с неопределенными переменными и register_globals on или кто-нибудь может узнать значение важной переменной (например ID-сеcсии) просто посмотрев на экран монитора.

Для чего следует использовать:

- для доступа к общедоступным страницам с передачей параметров (повышение функциональности)

- передача информации не влияющей на уровень безопасности

Для чего не следует использовать:

- для доступа к защищенным страницам с передачей параметров

- для передачи информации влияющей на уровень безопасности

- для передачи информации не подлежащей модифицированию пользователем (некоторые передают текст SQL-запросов.

Метод POST

Передать данные методом POST можно только с помощью формы на HTML странице. Основное отличие POST от GET в том, что данные передаются не в заголовке запроса а в теле, следовательно пользователь их не видит. Модифицировать может только изменив саму форму.

Преимущество:

- большая безопасность и функциональность запросов с помощью форм методом POST.

Для чего следует использовать:

- для передачи большого объема информации (текст, файлы..);

- для передачи любой важной информации;

- для ограничения доступа (например, использовать для навигации только форму - возможность доступная не всем программам-роботам или грабберам-контента).

Для чего не следует использовать:

Загрузка файлов методом POST

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

В приведенном выше примере "_URL_" необходимо заменить ссылкой на PHP-скрипт. Скрытое поле MAX_FILE_SIZE (значение необходимо указывать в байтах) должно предшествовать полю для выбора файла, и его значение является максимально допустимым размером принимаемого файла. Также следует убедиться, что в атрибутах формы вы указали enctype="multipart/form-data", в противном случае загрузка файлов на сервер выполняться не будет.

Внимание

Опция MAX_FILE_SIZE является рекомендацией браузеру, даже если бы PHP также проверял это условие. Обойти это ограничение на стороне браузера достаточно просто, следовательно, вы не должны полагаться на то, что все файлы большего размера будут блокированы при помощи этой возможности. Тем не менее, ограничение PHP касательно максимального размера обойти невозможно. Вы в любом случае должны добавлять переменную формы MAX_FILE_SIZE, так как она предотвращает тревожное ожидание пользователей при передаче огромных файлов, только для того, чтобы узнать, что файл слишком большой и передача фактически не состоялась.

Как определить метод запроса?

вернет GET или POST.

Какой способ следует применять?

• Если форма служит для запроса некой информации, например - при поиске, то ее следует отправлять методом GET. Чтобы можно было обновлять страницу, можно было поставить закладку и или послать ссылку другу.

Как передать данные в другой файл непосредственно из тела PHP-программы методом GET и POST?

Пример, для демонстрации отправки данных методом POST и GET одновременно и получения ответа от сервера. В этом примере файл file.php получил переменные:

GET var="23" и var2="54"
POST var3="test" и var4="еще тест"

Внимание, данные передаваемые через POST или GET всегда передаются строкой (string), независимо от того, через форму они передаются или через скрипт. Поэтому передавая число, помните, что в скрипт оно попадет как string.

Как перейти на другую страницу сайта из тела программы?

На новую страницу На предыдущую с обновлением:

Через генерацию JavaScript-кода:

На предыдущую с обновлением: На предыдущую без обновления: Перезагрузить текущую страницу:

Через PHP-функцию:

На новую На предыдущую страницу с обновлением: На текущую страницу с обновлением и генерацией полного url-адреса:

Самое главное, что надо помнить: сервер по своей инициативе обратиться к клиенту не может. Мы можем только по факту запроса выдать что-то браузеру - либо страницу, либо команду запросить другой ресурс.

ПРИМЕРЫ НЕОБЫЧНОГО ИСПОЛЬЗОВАНИЯ ФОРМ

Эти примеры показывают, что PHP-программу обработки ввода можно отделить от HTML-текста можно расположить на одной странице.

Пример 1. Задание номера карточки.

Здесь отсутствует кнопка передачи данных, т.к. форма, состоящая из одного поля, передается автоматически при нажатии клавиши Enter.

Пример 2. Навигация по массиву (списку) по средством формы.

В этом примере осуществляется перемещение по списку (массиву) элементов с отражением его номера (ключа) и значения элемента в массиве с помощью кнопок и скрытой строки с передачей навигационного параметра.

ПРОВЕРКА КОРРЕКТНОСТИ ДАННЫХ ИЛИ ДОПУСТИМОСТИ ВВОДИМЫХ ДАННЫХ

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

• Проверить, что поле, в которое заносится электронный адрес непустое (поскольку пользователь может просто забыть ввести адрес, и, если этот случай необработан, возникнет ошибочная ситуация);

• Проверить соответствие введенного адреса с помощью регулярного выражения.

Email обязательно должен содержать символ @, быть по длине не менее 8 символов, есть также регулярное выражение, по которому можно проверить данные на предмет соответствия адресу электронной почты.

Встает вопрос, как проинформировать пользователя о том, что он неправильно ввел данные? Один из вариантов решения этой проблемы - через сессионные переменные.

Пусть есть страница form.php, на которой расположена наша форма, и есть файл send.php, который является обработчиком данных формы в файле form.php.

В обоих файлах должна быть запущена сессия функцией session_start() в начале сценария до отправки заголовков документа.

Пусть отправляется переменная email методом POST в файле send.php, то делаем:

1. Проверку на длину:

2. Проверку корректности адреса электронной почты

Такая проверка осуществляется зачастую с помощью регулярных выражений. Как известно, у адреса две составляющие - имя пользователя и имя домена, которые разделены знаком @. В имени пользователя могут присутствовать заглавные и прописные буквы цифры, знаки подчеркивания и минуса, точки. Для проверки разделителя между именем пользователя и именем домена в выражение требуется добавить +@.

Также не забывайте, что электронный ящик может находиться на поддомене xxx@xxx.xxx.com, или даже на домене четвертого, пятого уровня (как вариант, реально эта ситуация крайне редка, но отбрасывать эти адреса не стоит). Поэтому в регулярном выражении не забывайте использовать точку (экранированную "\.") для указания того, что часть адреса после "@" может содержать точку как разделитель доменных имен.

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

Объединяя эти шаги, получаем следующее регулярное выражение для проверки адресов электронной почты:

Проверка осуществляется по этому шаблону с применением функции preg_match():

Эта пользовательская функция check_email возвращает true, если переданное значение переменной $email соответствует шаблону и false в противном случае.

В итоге проверка на корректность будет выглядеть так:

Соответственно в файле form.php перед формой прописываем следующее:

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

ДРУГИЕ ПРОВЕРКИ НА КОРРЕКТНОСТЬ ВВЕДЕННЫХ ДАННЫХ

Каждый web-мастер должен уметь не только писать скрипты, но и грамотно организовывать защиту своих творений. Одним из важнейших навыков является умение правильно фильтровать всю информацию, поступающую от пользователя.

Кроме чистых ошибок пользователя, необходимо также исключить ситуации, в которых возможно злонамеренное введение некорректных данных, к примеру, различных скриптов. Для этого вводимый пользователем текст необходимо обработать функциями удаления HTML-тегов (для исключения возможности написания скриптов на JavaScript и Visual Basic) и обратных слешей (для исключения возможности написания скриптов на Perl). Т. о. минимальный набор действий, необходимый для проверки корректности данных, вводимых пользователем, включает следующие этапы:

• проверка того, что пользователь ввел данные

• проверка допустимости вводимых пользователем данных (как правило, осуществляется при помощи регулярных выражений)

• обработка текста, введенного пользователем функцией htmlspecialchars для удаления HTML-тегов

• обработка текста, введенного пользователем функцией stripslashes для удаления обратных слешей

ФИЛЬТРАЦИЯ ДАННЫХ

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

После нажатия кнопки "OK" передаст скрипту index.php два значения - $login и $pass. Как их можно отфильтровать? Пример для переменной $login:

Вводимый пользователем текст необходимо обработать функциями удаления HTML-тегов (для исключения возможности написания скриптов на JavaScript и Visual Basic) и обратных слешей (для исключения возможности написания скриптов на Perl). К примеру, если переменная $login содержит текст с именем пользователя, то обработка этого текста выглядит так:

Если вы знакомы с регулярными выражениями, то предыдущий пример можно записать гораздо короче:

Аналогично фильтруются переменные, получаемые скриптом через URL. В движках сайтов можно встретить что-то вроде таких ссылок:

ПРОВЕРКА НА ПУСТОТУ ПОЛЯ

Проверка того, что пользователь ввел данные, может осуществляться, к примеру, с помощью функции isset: Для этой же цели можно использовать функцию empty:

На практике удобно сначала проверить, не пустой ли action формы, а потом уже проверять различные его составляющие: поле имя, e-mail и т. д. К примеру:

ТАБЛИЦА СРАВНЕНИЯ ТИПОВ В PHP

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

Замечание: HTML-формы не передают тип переменной: они всегда передают строки. Для проверки является ли строка числом, используйте функцию is_numeric().

Замечание: Использование if ($x) пока $x не определена сгенерирует ошибку E_NOTICE. Вместо этого используйте функцию empty() или isset() и/или инициализируйте переменную.

Читайте также: