Обработка формы скриптом с get параметрами
Есть страница index.php?a=1&b=2. На этой странице расположена форма, которая должна отправить get запросом данные формы на этот скрипт index.php?a=1&b=2, т.е получается такой урл index.php?a=1&b=2&form_param1=1&form_param2=2. В action формы указываю адрес страницы, однако переадресация после отправки формы идёт на index.php?form_param1=1&form_param2=2.
Почему?
Обработка HTML-формы PHP-скриптом
Первые попытки на PHP, есть следующая HTML-форма ее необходимо обработать PHP-скриптом. Есть первые.
Обработка форм одним скриптом?
Вечер добрый уважаемые.Такой вот вам вопрос ,имеется две формы 1)регистрация ,2)Тест(который.
Обработка одинаковых select одним скриптом jq
Есть страница интернет магазина, на которой выводятся товары. На каждом товаре добавлен select для.
Связь формы с скриптом.
что-то не особо получается связать значение формы со скриптом. нужно передать значение из поля.
Если я Вас правильно понял, Вам необходимо, чтобы помимо данных из формы, вводимых пользователем, передавались еще какие-то данные в GET запросе?
Я напряг все свои экстрасенсорные способности, и смело предполагаю, что Вы пытаетесь сделать что-то вроде того:
form action="index.php?a=1&b=2" method="GET"> input type="text" name="form_param1"> input type="text" name="form_param2"> input type="submit"> /form>
А у Вас выходит запрос index.php?form_param1=1&form_param_2=2 вместо ожидаемого:
index.php?a=1&a=2&form_param1=1&form_param_2=2
Все дело в том, что метод GET при отправке из формы затирает ваш урл, прописанный в action вставляя после знака «?» только данные из формы.
Чтобы получить GET запрос, который Вам нужен, можно использовать, например, скрытые поля в форме. Этот способ древний как этот мир:
form action="index.php" method="GET"> input type="hidden" name="a" value="1"> input type="hidden" name="b" value="2"> input type="text" name="param1"> input type="text" name="param2"> input type="submit"> /form>
Такая форма даст нужный Вам GET-запрос, с которым Вы потом можете работать в php:
1 2 3 4 5 6 7 8 9 10 11 12
if(isset($_GET[a])) { echo "a пришел в get
"; } if(isset($_GET[b])) { echo "b пришел d get
"; } if(isset($_GET[form_param1])) { echo "param1 пришел в get
"; } if(isset($_GET[form_param2])) { echo "param2 пришел в get
"; }
form action="index.php?a=1&b=2" method="POST"> input type="text" name="form_param1"> input type="text" name="form_param2"> input type="submit"> /form>
Теперь параметры a и b нам нужно брать из GET, а param1 и param2 из POST:
1 2 3 4 5 6 7 8 9 10 11 12
if(isset($_GET[a])) { echo "a пришел в get
"; } if(isset($_GET[b])) { echo "b пришел d get
"; } if(isset($_POST[form_param1])) { echo "param1 пришел в post
"; } if(isset($_POST[form_param2])) { echo "param2 пришел в post
"; }
PHP занятие 8. Передача данных
При передачи данных формы на сервер формируются суперглобальные переменные — ассоциативные массивы, содержащие передаваемые значения:
- $_GET[] — ассоциативный массив, который содержит все значения, передаваемые в сценарий с помощью метода формы GET .
- $_POST[] – ассоциативный массив, который содержит все значения, передаваемые в сценарий с помощью метода формы POST .
- $_REQUEST[] – ассоциативный массив, который содержит все значение, передаваемые в сценарий с помощью методов POST и GET .
Рассмотрим пример использования метода GET
Пример: В файле index.html находится форма для заполнения данных пользователем. В файле abswer.php разработать скрипт обработки данных формы с выводом введенных пользователем значений (использовать метод GET )
Выполнение:
Файл index.html
form action="answer.php" method="get"> Имя br>input type="text" name="Firstname" >br> Фамилия br> input type="text" name="Lastname" >br> E-mailbr> input type="text" name="email">br> input type="submit" name="submit" value="Отправить"> /form>
echo "
Ваше имя" . $_GET['Firstname']; echo "
Ваша фамилия" . $_GET['Lastname']; echo "
Ваш электронный адрес" . $_GET['email']; ?>
Ваше имя» . $_GET[‘Firstname’]; echo »
Ваша фамилия» . $_GET[‘Lastname’]; echo »
Ваш электронный адрес» . $_GET[’email’]; ?>
Рассмотрим вариант безопасной обработки данных:
If (isset($_GET['Firstname']) { $firstname=trim (strip_tags($_GET['Firstname'])); echo "
Ваше имя" .$firstname;} ?>
Безопасная обработка данных
Рассмотрим тот же самый пример с использованием метода POST
Пример: В файле index.html находится форма для заполнения данных пользователем. В файле abswer.php разработать скрипт обработки данных формы с выводом введенных пользователем значений (использовать метод POST )
Выполнение:
Файл index.html
form action="answer.php" method="post"> Имя br>input type="text" name="Firstname">br> Фамилия br> input type="text" name="Lastname">br> E-mailbr> input type="text" name="email">br> input type="submit" name="submit" value="Отправить"> /form>
echo "
Ваше имя" . $_POST['Firstname']; echo "
Ваша фамилия" . $_POST['Lastname']; echo "
Ваш электронный адрес" . $_POST['email']; ?>
Ваше имя» . $_POST[‘Firstname’]; echo »
Ваша фамилия» . $_POST[‘Lastname’]; echo »
Ваш электронный адрес» . $_POST[’email’]; ?>
Итерации по массиву $_Request
Пример: В файле index.html находится форма для заполнения данных пользователем. В файле abswer.php разработать скрипт обработки данных формы с выводом введенных пользователем значений (использовать метод REQUEST )
Выполнение:
Файл index.html
form action="answer.php" method="post"> Имя br>input type="text" name="Firstname">br> Фамилия br> input type="text" name="Lastname">br> E-mailbr> input type="text" name="email">br> input type="submit" name="submit" value="Отправить"> /form>
foreach($_REQUEST as $key => $value) { echo $key; echo ": " .$value; echo "
"; } ?>
Формируемый при передачи массив имеет вид:
$_Request['Firstname']="…" $_Request['Lastname']="…" $_Request['email']="…"
Функции для обработки данных формы
- is_string(string) – определяет, является ли переменная string строкой. Возвращает значение true или false .
- is_int(string) или is_integer(string) – определяет, является ли переменная string целым числом. Возвращает значение true или false .
- is_numeric(string) – определяет, является ли переменная string числовой строкой. Возвращает значение true или false .
- is_double(string) или is_float(string) – определяет, является ли переменная string числом с плавающей точкой. Возвращает значение true или false
- был ли отправлен запрос при щелчке на кнопке
- были ли поля заполнены цифрами, а не другими символами
- Создайте файл calculator.php
- Для построения формы воспользуйтесь конструкцией:
echo $_SERVER['PHP_SELF']; ?>" method="post">
Лабораторная работа 8_2 (сложный вариант):
Написать интерфейс, который позволял бы создавать html-формы. Пользователь выбирает, какие элементы и в каком количестве нужно создать, придумывает им названия, а программа сама генерирует требуемую форму.
- выбор типов элементов ввода и их количества (task_form.html);
task_form.html:
Результат:
ask_names.php:
При создании двух элементов типа «текстовая строка» и одного элемента типа «текстовая область» получим (рис. 8). Введем в эту форму, например, строки «Название», «Автор» и «Краткое содержание». Эти данные будет обрабатывать скрипт task.php.
рис. 8. Промежуточные результаты
Результатом работы скрипта с входными данными, приведенными выше, будет следующая форма:
Лабораторная работа 8_3 (легкий вариант):
Средствами PHP разработать простой валютный калькулятор, который конвертирует различные валюты в рубли (см. рисунок). Форму калькулятора и скрипт обработки поместить в один файл, используя функцию:
Валютный калькулятор на php
Лабораторная работа 8_4:
Заменить фреймовую структуру с меню, на работу с одним файлом php.
- Откройте файл в котором формируется меню.
- Измените значения всех элементов массива на index.php
- Добавьте к значению «index.php» параметр id , передаваемый методом GET
- Добавьте к параметру id уникальные значения.
action=" echo $_SERVER['PHP_SELF']; ?>"
GET-запросы в PHP
Итак, пришло время нам начать взаимодействовать с пользователем.
Как мы говорили ранее, PHP работает на сервере. Отсюда следует вопрос, а как же нам из браузера начать с ним взаимодействовать? Например, заполнить форму логина на сайте и отправить данные на сервер, чтобы наш код с ним что-нибудь сделал.
Именно об этом мы и поговорим в этом уроке.
Итак, давайте удалим все наши файлы в проекте и создадим новый пустой файл с именем index.php. Запишем в него следующий код:
Давайте выполним этот скрипт, открыв в браузере адрес:
http://myproject.loc/index.php
Как мы помним из этого урока, мы отправляем запрос веб-серверу, он понимает, что мы запрашиваем PHP-скрипт, выполняет его с помощью интерпретатора и возвращает нам ответ в виде результата выполнения этого скрипта.
Возникает вопрос: «А как можно передать от пользователя внутрь скрипта какие-либо данные?». Ответов на него у нас сразу несколько, и все мы их рассмотрим в этом уроке.
Метод GET
Когда мы вбиваем адрес скрипта и нажимаем Enter, выполняется GET-запрос по протоколу HTTP. В этом типе запроса к основному адресу мы можем прикрепить дополнительные параметры. Для того чтобы передать их, в конце основного адреса ставится знак вопроса, и мы можем перечислять эти параметры — вот так:
параметр1=значение1.
При этом если нам нужно указать несколько параметров, то мы разделяем их с помощью знака амперсанда:
арг1=знач1&арг2=знач2.
Если сейчас перейти по этой ссылке в браузере, то на сервер передадутся 2 параметра:
Мы можем очень просто получить к ним доступ из PHP с помощью магической переменной $_GET. Эта переменная является суперглобальной, то есть доступна нам в PHP всегда и в любом месте. Она представляет собой ассоциативный массив, в котором хранятся все переданные в запросе GET-параметры.
Давайте изменим код нашего index.php, чтобы узнать, что именно хранится в этой переменной.
array (size=2) 'arg1' => string '123' (length=3) 'arg2' => string 'scrrr' (length=5)
Как мы можем видеть, это действительно наши переданные аргументы, представленные в виде ассоциативного массива.
Учимся обрабатывать параметры
array (size=2) 'login' => string 'admin' (length=5) 'password' => string '12345' (length=5)
Разумеется, мы можем обращаться к этим элементам как к элементам обычного массива. Например, так:
Давайте создадим простую страничку, на которой мы будем выводить переданные с помощью GET-запроса логин и пароль.
Переданный логин:
Переданный пароль:
Обновим нашу страничку в браузере и увидим результат.
Отлично, мы успешно обработали данные, которые нам пришли от пользователя.
Учимся работать с формами
Давайте теперь вспомним уроки про формы из курса по HTML и сделаем простейшую форму для отправки GET-запроса на страничку.
Давайте запишем в наш index.php следующий код:
Логин
Пароль
И давайте теперь откроем его в браузере: http://myproject.loc/index.php
Как мы видим по исходному коду, форма отправит аргументы login и password с введенными значениями на адрес /login.php.
Давайте введем в поля значения admin и Pa$$w0rd соответственно и нажмем на кнопку «Войти».
Где сервер нам скажет о том, что такой странички не найдено.
Отлично! Так давайте же её создадим! Создаём рядом с нашим index.php файл с именем login.php. И пишем в него следующий код:
else < $isAuthorized = false; >?>
Вернёмся на нашу форму и повторно отправим пароль. Теперь мы увидим информацию о том, что мы успешно авторизовались. Это простейший прототип формы авторизации. Разумеется, он сильно упрощён, не всё сразу. А пока – делаем домашнее задание.