Контакти

Висновок відправлених формою даних в php. Створення HTML форм. II. Введення даних через цикл

Щоб організувати передачу даних на сервер за допомогою форми, потрібно реалізувати HTML форму, в яку відвідувачі сайту будуть вводити свою інформацію і PHP код, призначення якого в прийнятті та обробці отриманих даних на сервері.

HTML форма відправки даних

Форма на сторінці формується тегами

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

* Для HTML5 так само існує можливість розміщувати теги полів форми не всередині тегів форми, а в будь-якому місці на сторінці. При цьому для кожного такого поля потрібно вказувати атрибут "form", щоб визначити з якою формою відправки він повинен взаємодіяти.

Отже, найпростіша форма відправки може містити наступний код:


Значення А:
Значення Б:

Елементи форми і їх параметри:

action = "myform.php"- атрибут "action" визначає, який php-файл буде обробляти відправляються дані. У цьому прикладі, дані будуть відправлені в файл "myform.php", що знаходиться в тій же директорії що і сторінка з формою. Якщо цей атрибут й вказати явно, дані форми будуть відправлені за адресою сторінки самої форми.

method = "post"- параметр method визначає метод передачі даних POST або GET. Більш докладно про це в статті "Відмінності методів POST або GET". Якщо не вказувати атрибут явно, за замовчуванням буде використовуватися метод GET.

текст "Значення А:"і "Значення Б:"доданий тільки з метою оформлення та зрозумілості форми для користувача. Додавати це для передачі даних не обов'язково, але для того, щоб користувачеві стало зрозуміло, що вводити, варто вказувати.

Теги використовуються для формування різних керуючих елементів форми.

type = "text"- атрибут "type" визначає вид поля. Залежно від того, який тип вказано, змінюється і зовнішній вигляд елемента, і його призначення. Значення атрибута "text" вказує, що в браузері елемент буде відображатися однорядковим текстовим полем, куди користувач зможе ввести свій рядок.

name = "data1"- атрибут "name", вказує ім'я, вірніше індекс даних в масиві, отриманих сервером. Це обов'язковий параметр, за яким в php-обробнику можна буде потім отримати доступ переданому значенням. Ім'я може бути вибрано довільно, однак, зручніше коли це значення має якийсь зрозумілий сенс.

type = "submit"- тег з таким значенням параметра "type" буде відображатися на сторінці як кнопка. Насправді на формі можна обійтися і без кнопки. Якщо, наприклад, у формі є текстові поля, то відправку можна здійснити, просто натиснувши "Введення" на клавіатурі. Але наявність кнопки робить форму більш зрозумілою.

value = "(! LANG: Відправити" !}- в даному випадку (для type = "submit") визначає тільки напис на кнопці. Для type = "text", наприклад, це буде текст, який буде виведений в текстовому полі.

У підсумку, на сторінці цей код буде виглядати приблизно так:

При натисканні на кнопку, буде виконана відправка даних на вказану статтю, і якщо вона існує і коректно працює, дані будуть оброблені.

Обробка відправлених HTML формою даних в PHP

Відправлені описаним способом дані, поміщаються в суперглобальні масиви $ _POST, $ _GET і $ _REQUEST. $ _POST або $ _GET міститимуть дані в залежності від того, яким методом здійснювалася відправка. $ _REQUEST містить надіслані дані будь-яким із зазначених методів.

$ _POST, $ _GET і $ _REQUEST - це асоціативні масиви, поля-індекси яких збігаються з атрибутами "name" тегів . Відповідно, для роботи з даними в файлі myform.php можна привласнити змінним значення елементів такого масиву вказавши в якості індексу ім'я поля:

// для методу GET
$ A = $ _GET [ "Data1"];
$ B = $ _GET [ "Data2"];

// для методу POST
$ A = $ _POST [ "Data1"];
$ B = $ _POST [ "Data2"];

// при будь-якому методі
$ A = $ _REQUEST [ "Data1"];
$ B = $ _REQUEST [ "Data2"];

Перевірка заповнення полів форми

Іноді при отриманні даних потрібно перевірити, чи не відправив користувач порожню форму. Для цього можна використовувати функцію empty.

if (empty ($ _REQUEST [ "data1"])) (
echo "Поле не заповнено";
} else (
echo "Поле було заповнено";
$ A = $ _REQUEST [ "Data1"];
}

Зазвичай цього рішення досить. Якщо потрібно вводити текст, то буде зрозуміло, введений він чи ні. Однак, якщо користувач навмисно для обчислень введе нуль, то функція empty покаже, що значення немає. Тому для таких ситуацій краще використовувати функцію isset. Вона буде явно перевіряти, заданно Чи має значення чи ні.

if (isset ($ _REQUEST [ "data1"])) (
echo "Поле було заповнено";
$ A = $ _REQUEST [ "Data1"];
} else (
echo "Поле не заповнено";
}

або як відправити повідомлення на e-mail за допомогою HTML форми

Ви маєте свій власний web-сайт і хочете отримувати від своїх користувачів листи або повідомлення, питання, поради або просто побажання по електронній пошті, тоді цей урок для вас!

Як відправити повідомлення по e-mail

Нам потрібні такі файли:

  1. form.html - сторінка з формою.
  2. form_processing.php - файл зі скриптом, обробляють HTML форму.

Розглянемо код form.html:

Обробка HTML форми за допомогою PHP



Ваше ім'я:


E-mail:


Тема:


Повідомлення:







HTML формамістить поля для введення імені, поштової адреси користувача, теми повідомлення, тексту повідомлення і кнопку «Відправити», при натисканні на яку, інформація відправляється на обробку до PHPскрипту в файл form_processing.php.

Метод гіпертекстового транспортного протоколу має два значення: get (за замовчуванням) і post. Найчастіше використовується метод post, так як дозволяє передавати великі обсяги даних. Всі значення, що передаються до обробного скрипту за допомогою методу post, зберігаються в асоціативному масиві $ _POST (цей масив спочатку вбудований в php інтерпретатор), який складається з змінних $ _POST, де name - фактичне ім'я поля введення - значення атрибута name = "":

Створимо файл-обробник form_processing.php:

/ * Здійснюємо перевірку даних, що вводяться і їх захист від ворожих
скриптів * /
$ Your_name = htmlspecialchars ($ _POST [ "your_name"]);
$ Email = htmlspecialchars ($ _POST [ "email"]);
$ Tema = htmlspecialchars ($ _POST [ "tema"]);
$ Message = htmlspecialchars ($ _POST [ "messages"]);
/ * Встановлюємо e-mail адресата * /
$ Myemail = " [Email protected]" ;
/ * Перевіряємо чи заповнені обов'язкові поля введення, використовуючи check_input
функцію * /
$ Your_name = check_input ($ _POST [ "your_name"], "Введіть ваше ім'я!");
$ Tema = check_input ($ _POST [ "tema"], "Вкажіть тему повідомлення!");
$ Email = check_input ($ _POST [ "email"], "Введіть ваш e-mail!");
$ Message = check_input ($ _POST [ "message"], "Ви забули написати повідомлення!");
/ * Перевіряємо чи правильно записаний e-mail * /
if (! preg_match ( "/([\W\-]+\@[\w\-]+\.[\w\-]+)/", $ Email))
{
show_error ( "
Е-mail адрес не існує "
);
}
/ * Створюємо нову змінну, привласнивши їй значення * /
$ Message_to_myemail = "Вітаю!
Вашої контактною формою було відправлено повідомлення!
Ім'я відправника: $ your_name
E-mail: $ email
Текст повідомлення: $ message
кінець "
;
/ * Відправляємо повідомлення, використовуючи mail () функцію * /
$ From = "From: $ yourname<$email>\ R \ n Reply-To: $ email \ r \ n ";
mail ($ myemail, $ tema, $ message_to_myemail, $ from);
?>

Ваше повідомлення було успішно відправлено!


На Головну >>>


/ * Якщо при заповненні форми були допущені помилки спрацює
Наступного код: * /
function check_input ($ data, $ problem = "")
{
$ Data = trim ($ data);
$ Data = stripslashes ($ data);
$ Data = htmlspecialchars ($ data);
if ($ problem && strlen ($ data) == 0)
{
show_error ($ problem);
}
return $ data;
}
function show_error ($ myError)
{
?>


Будь ласка виправте наступну помилку:







exit ();
}
?>

Ділянка коду:

- виведе вказаний текст, якщо поля HTML формибули заповнені правильно. index.php - головна сторінка вашого сайту.

Ділянка коду:

- вкаже характер допущеної помилки.

Значення змінної:

$ From = "From: $ yourname<$email>\ R \ n Reply-To: $ email \ r \ n ";
?>

- автоматично відобразить e-mail користувача в потрібному рядку, коли ви будете писати відповідь.

«PHP Form - робота з формами в PHP» - восьмий урок підручника PHP. У цьому уроці ми поговоримо про обробку форм засобами PHP.

Робота з формами

PHP дозволяє обробляти дані, які користувач ввів в поля форми. Після активації кнопки submit дані відправляються на сторінку - обробник, зазначену в поле action елементу

. На сторінці - обробнику розташовується PHP скрипт, який виконує певні операції над отриманими даними, наприклад формує і відсилає лист за вказаними користувачем реквізитами.

Передача даних оброблювачу.

Дані з форми передаються на сервер як послідовність пар ім'я / значення. Це означає, що ім'я кожного елемента форми (що з'являється в атрибуті NAME тега) зв'язується зі значенням цього елементу (введеним або обраним користувачем). Формат ім'я / значення, що використовується для передачі, має вигляд ім'я = значення.

Всі дані, що передаються з форми в програму-оброблювач розташовуються в наступних суперглобальних масивах: $ _ GET, $ _POST, і $ _REQUEST.

$ _GET - містить всі значення, передані методом GET.

$ _POST-містить всі значення, передані методом POST.

$ _REQUEST-містить всі значення, передані методами POST і GET.

Прізвище:

Місто:

Повідомлення:

Після натискання на кнопку submit даної форми всі дані передаються оброблювачу process.php . Так як в цій формі використовується метод POST , То всі змінні будуть розташовані всередині масиву$ _POST.

Тепер створимо обробник:

echo "Ім'я: ». $ _POST [ «FName»]. «
»;
echo "Прізвище: ». $ _POST [ «LName»]. «
»;
echo "Місто: ». $ _POST [ «City»]. «
»;
echo "
»;
echo «Ваше повідомлення:». $ _POST [ «Message»];
?>

Розташуємо цей файл всередині директорії зі сторінкою форми. Тепер при використанні форми дані передадуться оброблювачу, який виведе на екран повідомлення, що містить призначені для користувача дані.

Масив $ _Request

Використання суперглобального масиву$ _Request дуже зручно, особливо коли невідомо, яким методом були передані дані.

Завдяки циклу foreach можна перебрати значення масиву $ _Request.

В даному прикладі ми виводимо на екран всі значення масиву $ _Request. Зроблено це може бути для перевірки правильності введення даних користувачем. Тобто користувач вводить дані в форму, натискає відправити, але замість обробки даних у нього на екрані висвічується повідомлення з введеними їм даними і написом підтвердити або відмовитися. Дана ідея застосована на багатьох сайтах, та й взагалі в багатьох програмах.

В даному уроці ми навчилися використовувати PHP для обробки форм. Як ви можете бачити PHP є потужним інструментом обробки форм, дозволяючи робити найрізноманітніші маніпуляції над одними даними, такі, як збереження даних про користувача в базі даних для подальшої авторизації, Ви надсилаєте ПП на пошту користувача і багато іншого.

У наступному уроці ми навчимося перевіряти введені користувачем дані перед безпосередньою обробкою.

Всім доброго часу доби. На зв'язку Олексій Гулинін. У минулій статті ви дізналися про те, що таке сериализация в php. У даній статті я б хотів розповісти про те, як працювати з формами в PHP. Мова PHP призначений для програмування web-сценаріїв, і обробка форм займає, мабуть, найголовніше місце в цьому процесі. Зараз вже і не зустріти сайтів, на яких не було б, наприклад, реєстрації або форми зворотного зв'язку, або опитувальника. Форуми, інтернет-магазини, додавання коментаря, відправка повідомлення в соціальній мережі - все це обробка даних, поміщених в поля форми. Давайте на прикладі розберемося, як обробляти форми на PHP.
Будемо реалізовувати просту задачу: необхідно створити 2 поля (ім'я та прізвище), передати ці дані скрипту action.php, в результаті повинно вийти вітання "Ласкаво просимо, прізвище ім'я". Хто забув, як створюються форми, і які там є поля, можна подивитися. Створимо файл test.html:

ім'я: Прізвище:



Звертаю вашу увагу, що файл action.php (в нашому випадку) повинен знаходитися в одній папці з файлом test.html. Тут можна вказувати як відносні, так і абсолютні шляхи. Будьте уважні, багато помилок пов'язані з неправильним зазначенням шляху до скрипта-обробника форми.

Створимо файл action.php наступного змісту:

Якщо ми зараз відкриємо файл test.html, заповнимо поля форми і натиснемо на кнопку, то потрапимо в файл action.php, де буде виведено повідомлення. В даному випадку браузер звертається до скрипту action.php і передає йому, через знак "?" всі значення атрибутів name, розташованих усередині тегів , Розділених символом &. Зверніть увагу, що підставляється замість $ _SERVER.

Нашу задачу ми можемо вирішити, розібравши рядок QUERY_STRING за допомогою стандартних функцій по роботі з рядками в PHP, але краще скористатися іншим механізмом - це використання масиву $ _REQUEST. Всі дані, які отримані з полів форми, PHP поміщає в масив $ _REQUEST, не залежно від того, яким способом були передані дані: POST або GET (дізнатися можна через $ _SERVER [ "REQUEST_METHOD"]). Нагадую ніж ці способи відрізняються:

Метод GET є відкритим, метод POST є закритим, тобто вони відрізняються способом передачі параметрів. приклад:

1) Якщо ми використовуємо метод post: mysite.ru/request.php.
2) Якщо ми використовуємо метод get: mysite.ru/request.php?myname=»Alex»&surname=»Gulynin ».

Також, крім масиву $ _REQUEST, PHP створює масиви $ _GET і $ _POST. Давайте тепер реалізуємо нашу задачу, на основі отриманих знань:

Якщо ми зараз заповнимо форму і натиснемо на кнопку, то побачимо, що скрипт action.php вітає нас по прізвища та імені. Усе працює коректно.

Тут все добре, але якщо ми змінимо назву скрипта, то потрібно буде вносити зміни в файл test.html. Давайте модифікуємо файл action.php, так, щоб, звертаючись до нього або виводилася форма, коли ми нічого не відправили, або вітання, коли ми натиснули кнопку:

"> Ім'я: Прізвище:


Тепер ми не залежимо від імені скрипта, тому що задаємо його через змінну оточення $ _SERVER [ "SCRIPT_NAME"]. Конструкція = $ _ SERVER [ "SCRIPT_NAME"]?> Рівнозначна конструкції .
Крім змінної оточення SCRIPT_NAME існує безліч інших.

У Вас в браузері заблокований JavaScript. Дозвольте JavaScript для роботи сайту!

Робота з формами

Для передачі даних від користувача Web-сторінки на сервер використовуються HTML-форми. Для роботи з формами в PHP передбачений ряд спеціальних засобів.

Попередньо певні змінні

У PHP існує ряд попередньо визначених змінних, які не змінюються при виконанні всіх додатків в конкретному середовищі. Їх також називають змінними оточення або змінними середовища. Вони відображають установки середовища Web-сервера Apache, а також інформацію про запит даного браузера. Є можливість отримати значення URL, рядки запиту і інших елементів HTTP-запиту.

Всі попередньо визначені змінні містяться в асоціативному масиві $ GLOBALS. Крім змінних оточення цей масив містить також глобальні змінні, визначені в програмі.

приклад 1

Перегляд масиву $ GLOBALS $ Value) echo "\ $ GLOBALS [\" $ key \ "] == $ value
"; ?>

В результаті на екрані з'явиться список всіх глобальних змінних, включаючи змінні оточення. Найбільш часто використовувані з них:

МінливаописЗміст
$ _SERVER [ "HTTP_USER_AGENT"]Назва і версія клієнтаMozilla / 5.0 (compatible; Googlebot / 2.1; + http: //www.google.com/bot.html)
$ _SERVER [ "REMOTE_ADDR"]IP-адреса5.9.142.17
getenv ( "HTTP_X_FORWARDED_FOR")Внутрішній IP-адреса клієнта
$ _SERVER [ "REQUEST_METHOD"]Метод запиту (GET або POST)GET
$ _SERVER [ "QUERY_STRING"]При запиті GET закодовані дані, що передаються разом з URL
$ _SERVER [ "REQUEST_URL"]Повна адреса клієнта, включаючи рядок запиту
$ _SERVER [ "HTTP_REFERER"]Адреса сторінки, з якої був зроблений запит
$ _SERVER [ "PHP_SELF"]Шлях до виконуваної програмою/index.php
$ _SERVER [ "SERVER_NAME"]доменсайт
$ _SERVER [ "REQUEST_URI"]шлях/php/php_form.php

Обробка введення користувача

PHP-програму обробки введення можна відокремити від HTML-тексту, що містить форми введення, а можна розташувати на одній сторінці.

приклад 2

Приклад обробки введення

"Method =" post ">

Номер картки:



Тут відсутня кнопка передачі даних, тому що форма, що складається з одного поля, передається автоматично при натисканні клавіші .

При обробки елемента з багатозначним вибором для доступу до всіх вибраних значень потрібно до імені елемента додати пару квадратних дужок. Для вибору декількох еллементов слід утримувати клавішу Ctrl.

приклад 3.1

список



Результат прикладу 3.1:

приклад 3.2

Обробка списку з файлу ex1.htm

    "; Foreach ($ Item as $ value) echo"
  • $ Value "; echo"
"; ?>

Приклад 4. Прийом значень від checkbox-прапорців

$ V) (if ($ v) echo "Ви знаєте мову програмування $ k!
"; Else echo" Ви не знаєте мови програмування $ k.
"; } } ?>
"Method =" post "> Які мови програмування ви знаєте?
PHP
Perl

Результат прикладу 4:

приклад 5

"; ?>
"Method =" post ">

Можна обробляти форми, не піклуючись про фактичні іменах полів.

Для цього можна використовувати (в залежності від методу передачі) асоціативний масив $ HTTP_GET_VARS або $ HTTP_POST_VARS. Ці масиви містять пари ім'я / значення для кожного елемента переданої форми. Якщо Вам все одно, Ви можете використовувати асоціативний масив $ _REQUEST.

приклад 6

Обробка довільного введення незалежно від методу передачі $ Value) echo "$ key == $ value
"; ?>

Приклад 7. Обробка натискання на кнопку з використанням оператора "@".

">

За допомогою функції header (), пославши браузеру заголовок "Location", можна перенаправити користувача на нову сторінку.

наприклад:

Передача файлу на сервер. Залити файл. UpLoad

PHP дозволяє передавати на сервер файли. HTML-форма, призначена для передачі файлу, повинна містити аргумент enctype = "multipart / form-data".

Крім того в формі перед полем для копіювання файлу повинна знаходитися приховане поле з ім'ям max_file_size. У цей приховане поле повинен бути записаний максимальний розмір переданого файлу (зазвичай не більше 2 Мбайт).

Саме поле для передачі файлу - звичайний елемент INPUT з аргументом type = "file".

наприклад:

"Method =" post ">

Після того, як файл переданий на сервер, він отримує унікальне ім'я і зберігається в каталозі для тимчасових файлів. Повний шлях до файлу записується в глобальну змінну, ім'я якої збігається з ім'ям поля для передачі цього файлу. Крім цього PHP зберігає ще деяку додаткову інформацію про переданому файлі в інших глобальних змінних:

приклад 8

Обробка переданого файлу "; Echo" ім'я: ". $ _ FILES [" userfile "] [" name "]."
"; Echo" розмір: ". $ _ FILES [" userfile "] [" size "]."
"; Echo" тип: ". $ _ FILES [" userfile "] [" type "]."
"; } ?>
"Method =" post ">



Приклади завантаження файлів на сервер

Якщо виникнуть проблемми з перекодуванням сервером завантаженого файлу, символ з кодом 0х00замінений на пробіл (символ з кодом 0х20), Допишіть в файл httpd.confз каталогу Апача (/ usr / local / apache) такі рядки.

CharsetRecodeMultipartForms Off



Сподобалася стаття? поділіться їй