Get і post приклади. Атрибут Action і Method. Методи GET і POST. Вибір між GET і POST
Сучасні веб-ресурси не просто надають інформацію відвідувачу, але і взаємодіють з ним. Для взаємодії з користувачем потрібно отримувати деяку інформацію від нього. Для отримання даних є кілька методів, дуже поширені методи GET і POST. І відповідно в PHP є підтримка цих методів передачі даних GET і POST. Подивимося, як працюють ці методи.
метод GETдані методом GET передаються шляхом їх додавання до URL-адресою викликається сценарію, призначеного для обробки отриманої інформації. для пояснення даного методу наберіть в адресному рядку браузера URL-адресу ресурсу і додайте спочатку знак питання (?), а потім рядок num \u003d 10. наприклад
http: //домен.ru/script.php? num \u003d 10
Якщо у вас локальний сервер, То зазвичай домен буде localhost, і тоді попередній запис буде виглядати
http: //localhost/script.php? num \u003d 10
В цьому випадку ми передаємо параметр num рівний 10. Для додавання наступних параметрів сценарієм потрібно використовувати роздільник - амперсант (&), наприклад
http: //домен.ru/script.php? num \u003d 10 & type \u003d new & v \u003d text
В даному випадку ми передали скрипту три параметра: num зі значенням 10, type зі значенням "new" і v зі значенням "text".
Для отримання цих параметрів в скрипті потрібно використовувати вбудований масив $ _GET $ _GET [ "num"], $ _GET [ "type"], $ _ GET [ "v"]. Ці елементи масиву і будуть містити значення переданих параметрів. Для демонстрації цього прикладу створіть файл script.php такого змісту
echo ($ _GET [ "num"]. "
");
echo ($ _GET [ "type"]. "
");
echo ($ _GET [ "v"]);
?>
І тепер викличте цей файл в браузері
http: //путь/script.php? num \u003d 10 & type \u003d new & v \u003d text
і ви побачите передані параметри у вікні браузера. Але якщо ви викличте цей файл без додаткових параметрів http: //путь/script.php, то побачите помилки, які видасть інтерпретатор PHP, Про те, що таких елементів масиву $ _GET немає. Перевірці даних одержуваних від користувача можна посвітити не одну статтю, тому в цій статті я не буду порушувати це момент.
Як ви, напевно, розумієте змушувати користувача набирати дані в адресному рядку браузера не дуже добре і зовсім незручно. Тому для прийому даних від користувача потрібно використовувати html-форми. Напишемо простеньку html-форму.
Трохи прокоментую створену форму. Форми створюються тегом form. Поля форми створюються тегами input, select, textarea (докладніше можна почитати). У тезі form в атрибуті action вказується URL-адресу скрипта, який отримає дані форми. У нашому випадку ми вказали вже існуючий у нас файл script.php. Атрибут method задає метод відправки даних. Ми вказали метод GET. Тепер ми знаємо, якому файлу будуть передані дані форми, і яким способом, залишилося розібратися, де їх там шукати ?!
Дані цієї форми будуть передані веб-ресурсу браузером шляхом додавання їх до URL-адресою: спочатку буде знак питання (?), Потім будуть представлені параметри розділені амперсант (&). Назва параметра буде братися з атрибута name, яке повинно бути прописано у будь-якого поля форми. Значення параметра буде залежати від типу поля. Якщо поле є текстовим, то значенням буде введений користувачем текст. Якщо ж поле буде являти собою список, групу перемикачів або прапорців, то значенням параметра буде значення атрибута value вибраного пункту. Поясню на прикладі нашої форми. Якщо користувач введе в поле input число 10, то назвою параметра буде num (значення атрибута name тега input), а значенням буде 10 (введене користувачем число). Відповідно браузер сформує пару "num \u003d 10". Якщо користувач зі списку вибере варіант "Так", то назвою параметра буде type (значення атрибута name тега select), а значенням буде yes (значення атрибута value тега option). Відповідно браузер сформує пару "type \u003d yes".
Тепер цю форму розмістимо на сторінці forma.php.
Введіть в поля форми будь-які значення і натисніть кнопку "Відправити". Після натискання кнопки браузер відкриє іншу сторінку (script.php), і у вікні браузера будуть відображені дані, які ви ввели. Я думаю зрозуміло чому: браузер передасть дані сценарієм script.php, і в скрипті ці дані будуть оброблені і виведені на екран.
метод POSTТепер давайте розглянемо, як працює метод POST.
Для відправки даних методом POST потрібно використовувати HTML-форми. Як ми пам'ятаємо, що за спосіб відправки даних форми відповідає атрибут method тега form. Тому потрібно в атрибуті method тега form вказати значення POST. В іншому форма може бути та ж, як і для методу GET. Змінимо нашу форму, яку ми вже використали для передачі даних способом GET, для передачі методом POST.
Як бачите, форма залишилася та ж за винятком атрибутів method і action. Тепер дані будуть передаватися сценарієм script_post.php. Помістимо нашу форму на сторінці forma_post.php.
Тепер треба написати сценарій, який буде обробляти дані нашої форми.
Для отримання в скрипті даних переданим методом POST потрібно використовувати вбудований масив $ _POST. Ключами цього масиву будуть назви параметрів. У нашому випадку потрібно використовувати $ _POST [ "num"], $ _POST [ "type"], $ _ POST [ "v"]. Ці елементи масиву і будуть містити значення переданих даних. Як бачите відміну від використання способу GET, виражається лише в використанні масиву $ _POST. Тому нам не важко буде написати файл script_post.php:
echo ($ _POST [ "num"]. "
");
echo ($ _POST [ "type"]. "
");
echo ($ _POST [ "v"]);
?>
Тепер відкрийте файл forma_post.php в браузері. Введіть якісь дані в поля форми і натисніть кнопочку "Відправити". Зараз, напевно, ви помітили відмінність методу POST від GET - в адресному рядку браузера не з'явилися дані форми. дані методом POST не можна передати через адресний рядок браузера. Це суттєва відмінність потрібно запам'ятати.
В PHP в незалежності, яким способом були відправлені дані - методом POST або методом GET - отримати дані можна використовуючи масив $ _REQUEST. Порівняння методів GET і POSTПри використанні методу GET дані передаються шляхом додавання до URL-адресою. Таким чином, вони будуть видні користувачеві, що з точки зору безпеки не завжди добре. Також максимальний обсяг переданих даних буде залежати від браузера - від максимально-допустимої кількості символів адресному рядку браузера.
При використанні методу POST дані не будуть видні користувачеві (не відображаються в адресному рядку браузера). І тому вони більш захищені, а, отже, і програма обробна ці дані більш захищена в плані безпеки. Також обсяг переданих даних практично ні чим не обмежений.
Вибираючи спосіб передачі даних потрібно враховувати наведені особливості і зупинятися на найбільш прийнятному методі.
Спільного між ними то що вони працюють однаково. Різниці між ними технічно ніякої. А ось ідеологічні відмінності є.
Я розповім про них в контексті PHP. Прошу зауважити що протокол HTTP до PHP має непряме відношення бо він створювався для обміну html сторінками а PHP просто розширює можливості і того і іншого.
GET запит використовується щоб отримати дані а POST щоб відправити. (Нагадую що технічно вони працюють однаково).
Тому в контексті PHP спираючись на цю ідеологію зробили такий спосіб:
1. При кожному запуску PHP за замовчуванням створюються суперглобальні масиви ($ _GET, $ _POST).
2. Якщо в рядку запиту є знак питання (?). Те все що після нього вважається параметрами GET запиту вони представлені в форматі "ключ" \u003d "значення" і як роздільник використовується знак амперсанда (&)
приклад:
GET /index.php?name\u003dАндрей&surname\u003dГалкін
це рядок запиту, тут 2 параметра. ці параметри потраплять в масив $ _GET.
3. $ _POST заповнюється іншим способом. вміст цього масиву заповнюється з "заголовків запиту". Тобто з місця, прихованого від очей в явному вигляді. Всю рутину по створенню таких заголовків бере на себе браузер. Хоча іноді і щось редагується в заголовках в ручну.
Найчастіше пост запит використовується в формах (для відправки даних).
Наприклад у нас є форма для входу 2 поля логін і пароль.
Уявімо що ми використовуємо GET метод. Тоді при відправці форми ми перейдемо на наступну адресу /login.php?login\u003dАндрей&password\u003d123 погодьтеся що так передавати таку інформацію зовсім небезпечно. Будь-хто може відкрити ваш браузер і починаючи вводити адресу сайту він з історії може побачити ваші паролі і логіни.
А ось якби ми вказали методом POST то ми б отримали такий запит:
POST /login.php (login \u003d Андрій & password \u003d 123) то що в дужках було б приховано і ніяк не збережено в браузері.
Загалом підсумовуючи:
GET - це щоб отримати певну сторінку в певному виді (сортування, поточна сторінка в блозі, рядок пошуку і т.п.).
POST - для оправлення даних які не впливають на відображення сторінки, в тому плані що ці дані впливають тільки на результат виконання скрипта (логіни, паролі, номери кредиток, повідомлення і т.п.).
І ще одна хороша новина їх можна комбінувати, наприклад
POST /index.php?page\u003dlogin (login \u003d Андрій & password \u003d 123) Думаю я вже досить пояснив що з цього вийде і які параметри в який масив потраплять.
Методи GET і POST в HTTP і HTTPS - два найпопулярніших методу, використовуваних для передачі даних з клієнта на сервер з використанням протоколу HTTP (протокол передачі гіпертексту). І GET, і POST можуть використовуватися для відправки запиту і отримання відповіді, але між ними існує значна різниця.
Різниця між запитами GET і POST в HTTP або HTTPS - популярне питання на кожному інтерв'ю з веб-програмування. Оскільки HTML не залежить від технології веб-сервера, такий як Java, ASP або PHP і HTTP - це основний протокол в просторі Інтернету, не можна чітко ігнорувати важливість розуміння методів GET і POST. У цій статті ми розглянемо, що таке HTTP-метод GET, що таке HTTP-метод POST, коли використовувати той чи інший запит і яка різниця між ними. Розберемо кожне поняття окремо.
Що таке HTML?
HTML - це мова, яка використовується для створення веб-сторінок. Гіпертекст відноситься до гіперпосиланнями, які може містити HTML-сторінка. Мова розмітки означає спосіб використання тегів для визначення макета сторінки і елементів на сторінці.
нижче наведено приклад HTML, Який використовується для визначення базової веб-сторінки з заголовком і одним абзацом тексту:
<Голова>
<Название> TechTerms.com название>
HEAD>
<Тело>
Це приклад абзацу в HTML. p>
Body>
Html>
Перший рядок визначає тип вмісту, що міститься в документі.,
і , Які все включені в приклад вище. Заголовок сторінки, метадані та посилання на файли з прив'язкою поміщаються між Фактичне вміст сторінки знаходиться між тегами .За останні кілька десятиліть мережу пережила безліч змін, але HTML завжди була основною мовою, використовуваним для розробки веб-сторінок. Цікаво, що хоча веб-сайти стали більш просунутими і інтерактивними, HTML став простіше. Якщо ви порівнюєте джерело сторінки HTML5 з аналогічною сторінкою, написаної в HTML 4.01 або XHTML 1.0, на сторінці HTML5 буде менше коду. Це пов'язано з тим, що сучасний HTML спирається на каскадні таблиці стилів або JavaScript для форматування майже всіх елементів всередині сторінки.
Багато динамічні веб-сайти генерують веб-сторінки «на льоту», використовуючи серверний мова сценаріїв, такий як PHP або ASP. Однак навіть динамічні сторінки повинні бути відформатовані з використанням HTML. Тому мови сценаріїв часто генерують HTML-код, який відправляється в веб-браузер.
Протокол передачі гіпертексту HTTP призначений для взаємодії між клієнтами і серверами і працює як протокол запиту-відповіді.
Веб-браузер може бути клієнтом, а додаток на комп'ютері, на якому розміщений веб-сайт, - сервером.
Клієнт (браузер) відправляє HTTP-запит серверу, сервер повертає відповідь, який містить інформацію про стан запиту і може також містити запитаний контент.
Два методу запитів GET і POST
Два часто використовуваних методу для запиту-відповіді між клієнтом і сервером:
GET - запитує дані з вказаного ресурсу;
POST - відправляє даних, що підлягають обробці, на зазначений ресурс.
Переклад GET і POST в буквальному сенсі означає отримання і постобработку.
Детальніше про HTTP
HTTP - це протокол, який використовується для передачі даних через Інтернет. Є частиною пакета інтернет-протоколу і визначає команди і служби, які використовуються для передачі даних веб-сторінки.
HTTP використовує модель server-client. Клієнт може бути домашнім комп'ютером, ноутбуком або мобільним пристроєм. HTTP-сервер, як правило, є веб-хостом з програмним забезпеченням веб-сервера, таким як Apache або IIS. Коли користувач отримує доступ до веб-сайту, браузер відправляє запит на відповідний веб-сервер і відповідає кодом стану HTTP. Якщо URL-адресу дійсний і з'єднання надано, сервер відправить браузеру веб-сторінку і пов'язані файли.
Загальні коди стану HTTP включають:
200 - успішний запит (існує веб-сторінка);
301 - переміщається постійно (часто перенаправляється на новий URL-адресу);
401 - несанкціонований запит (необхідно ввійти в систему);
500 - внутрішня помилка сервера (часто викликана неправильною конфігурацією сервера).
POST і GET в HTTP
HTTP визначає команди GET і POST, які використовуються для обробки подань форм на веб-сайтах. Команда CONNECT використовується для полегшення безпечного з'єднання, яке шифрується з використанням SSL. Зашифровані HTTP-з'єднання відбуваються через HTTPS - розширення HTTP, призначене для захищених передач даних.
URL-адреси, що починаються з «http: //», доступні за стандартними протоколами передачі гіпертексту і за замовчуванням використовують порт 80. URL-адреси, що починаються з «https: //», доступні через безпечне з'єднання HTTPS і часто використовують порт 443.
POST
POST - це серія системних перевірок, Виконуваних комп'ютерами та іншими електронними пристроями при їх включенні. Результати тесту можуть відображатися на екрані, виводитися через миготливі світлодіоди або просто записуватися всередині. В комп'ютерних системах операція POST виконується на початку послідовності завантаження. Якщо всі тести пройдені, інша частина процесу запуску буде продовжена автоматично.
Операційні системи пристроїв Mac і Windows запускають POST кожен раз, коли комп'ютер завантажується або перезавантажується. сканування перевіряє апаратне забезпечення і гарантує, що процесор, ОЗУ і пристрої зберігання даних будуть працювати правильно. Якщо під час виконання POST виникла помилка, процес запуску може призупинитися або повністю припинитися, а на моніторі може з'явитися повідомлення про На ПК помилки POST часто відображаються на екрані інформації про BIOS. Вони можуть виводитися як кріптовие коди, такі як «08», або як системне повідомлення, наприклад, «Помилка системної пам'яті при зміщенні ». на Mac помилки POST часто позначаються простою графікою, наприклад, зламаною іконкою папки, яка вказує, що завантажувальний пристрій, не знайдено.
фізичні прояви
У деяких випадках екран комп'ютера може навіть не включатися перед помилками POST. Якщо це станеться, коди помилок можуть виводитися через миготливі світлодіодні індикатори або звукові сигнали. Наприклад, Apple iMac буде відтворювати три послідовних тони, витримувати паузу в п'ять секунд, а потім повторювати тони, коли під час запуску виявляється погана ОЗУ. Більшість ПК також видають звукові сигнали при виявленні помилок POST, хоча кожен виробник використовує свої власні коди.
POST - досить технічний термін, який використовують тільки комп'ютерні техніки на регулярній основі. Однак це хороша абревіатура, бо дає змогу краще зрозуміти повідомлення про помилки, які можуть з'явитися на комп'ютерах або інших електронних пристроях. Якщо комп'ютер не запускається через помилку POST, можна використовувати інший пристрій для пошуку значення і причини помилки з веб-сайту виробника. Потім можна вжити відповідних заходів - видалення модуля пам'яті або повторну установку відеокарти з подальшим перезапуском обладнання.
GET
POST також є методом передачі змінних форми HTML з одного веб-сторінки на іншу, не відображаючи їх в адресному рядку. Альтернативний метод - GET, який додає значення в URL. Запити HTTP POST надають додаткові дані від клієнта (браузера) на сервер в тексті листа. Навпаки, запити GET включають всі необхідні дані в URL. Форми в HTML можуть використовувати будь-який метод, вказавши метод \u003d POST або method \u003d GET (за замовчуванням) в елементі
зберігши даний код в HTML-файлі і переглянувши його за допомогою вашого улюбленого браузера, ви побачите звичну HTML-форму:
Тег
, Власне і задає форму. Його атрибути - обидва необов'язкові:- action - вказує URL (повний або відносний), на який буде відправлена \u200b\u200bформа. Якщо цей атрибут й вказати, більшість браузерів (точніше кажучи, всі відомі мені браузери) відправляють форму на поточний документ, тобто "саму на себе". Це зручне скорочення, але за стандартом HTML атрибут action обов'язковий.
- method - спосіб відправки форми. Їх два.
- GET - відправка даних форми в адресному рядку.
Ви могли помітити на різних сайтах присутність в кінці URL символу "?" і наступних за ним даних в форматі параметр \u003d значення. Тут "параметр" відповідає значенню атрибута name елементів форми (див. Нижче про тег ), А "значення" - вмісту атрибута value (в ньому, наприклад, міститься введення користувача в текстове поле того ж тега ).
Для прикладу - спробуйте пошукати що-небудь в Яндексі і зверніть увагу на адресний рядок браузера. Це і є спосіб GET. - POST - дані форми відправляються в тілі запиту. Якщо не зовсім зрозуміло (або зовсім незрозуміло), що це таке - не хвилюйтеся, скоро ми до цього питання повернемося.
- GET - відправка даних форми в адресному рядку.
Тег - задає елемент форми, який визначається атрибутом type:
- Значення "text" задає однорядкове текстове поле введення
- Значення "submit" задає кнопку, при натисканні якої відбувається відправка форми на сервер
Можливі й інші значення (та й - не єдиний тег, що задає елемент форми).
Отже, що ж відбувається, коли ми натискаємо кнопку "OK"?
- Браузер переглядає входять в форму елементи і формує з них атрибутів name і value дані форми. Припустимо, введено ім'я Vasya. У цьому випадку дані форми - name \u003d Vasya & okbutton \u003d OK
- Браузер встановлює з'єднання з сервером, відправляє на сервер запит документа, зазначеного в атрибуті action тега
- Сервер аналізує отриманий запит, формує відповідь, відправляє його браузеру і закриває з'єднання
- Браузер відображає отриманий від сервера документ
Відправка того ж запиту вручну (з допомогою telnet) виглядає наступним чином (припустимо, що доменне ім'я сайту - www.example.com):
Telnet www.example.com 80 GET /cgi-bin/form_handler.cgi?name\u003dVasya&okbutton\u003dOK HTTP / 1.0 \\ r \\ n Host: www.example.com \\ r \\ n \\ r \\ n
Як ви, швидше за все, вже здогадалися, натискання submit-кнопки в формі з методом відправки "GET" аналогічно введенню відповідного URL (зі знаком питання і даними форми в кінці) в адресному рядку браузера:
Http://www.example.com/cgi-bin/form_handler.cgi?name\u003dVasya&okbutton\u003dOK
Насправді, метод GET використовується завжди, коли ви запитуєте з сервера будь-якої документ, просто ввівши його URL, або клацнувши по посиланню. При використанні
- скорочена форма запису для
=$_SERVER["PHP_SELF"]?> Припустимо, в поле name ми ввели значення Вася, і натиснули кнопку OK. При цьому браузер відправляє на сервер POST-запит. Тіло запиту: name \u003d Вася & okbutton \u003d OK. PHP автоматично заповнює масив $ _POST: echo $_SERVER["PHP_SELF"]; ?> .
$ _POST [ "name"] \u003d "Вася"
$ _POST [ "okbutton"] \u003d "OK"
Насправді, значення "Вася" відправляється браузером в urlencode-вигляді; для кодування windows-1251 це значення виглядає як% C2% E0% F1% FF. Але, оскільки PHP автоматично здійснює необхідне декодування, ми можемо "забути" про цю особливість - поки не доведеться працювати з HTTP-запитами вручну.
Так як в тілі запиту вказуються тільки імена і значення, але не типи елементів форм, PHP поняття не має, відповідає $ _POST [ "name"] рядку введення, кнопці, або списку. Але ця інформація нам, в общем-то, абсолютно не потрібна. :)
Оскільки знати, що написано на кнопці submit, нам необов'язково, в рядку 11 можна видалити атрибут name, скоротивши опис кнопки до . В цьому випадку, браузер відправить POST-запит name \u003d Вася.
А тепер - те ж саме, але для GET-форми:
if (isset ($ _ GET [ "name"])) (
Привіт,
". $ _POST [" name "]." ". $ _GET [" name "]."
!" ;}
?>
У рядку 8 можна було б з таким же успіхом написати
Ніяких нових прийомів тут не використовується. Розберіться, виконайте код, спробуйте модифікувати ...
Змінимо останній приклад, щоб користувачеві не потрібно було повторно заповнювати поля. Для цього заповнимо атрибути value елементів форми тільки що введеними значеннями.
$ Name \u003d isset ($ _ POST [ "name"])? $ _POST [ "name"]: "";
$ Year \u003d isset ($ _ POST [ "year"])? $ _POST [ "year"]: "";
If (isset ($ _ POST [ "name"], $ _POST [ "year"])) (
if ($ _POST [ "name"] \u003d\u003d "") (
echo "Вкажіть ім'я!
"
;
) Else if ($ _POST [ "year"]<
1900
||
$_POST
[
"year"
] >
2004
) {
echo "Вкажіть рік народження! Допустимий діапазон значень: 1900..2004
"
;
) Else (
echo "Привіт,". $ _POST [ "name"]. "!
"
;
$ Age \u003d 2004 - $ _POST [ "year"];
echo "Вам". $ Age. "років
"
;
}
Привіт,
" ;
}
?>
Кілька незрозумілими можуть виявитися рядка 4 та 5. Всі дуже просто: рядок 4 можна було б записати так:
if (isset ($ _ POST [ "name"]))
$ Name \u003d $ _POST [ "name"];
else
$ Name \u003d "";
Може виникнути питання - чому б не викинути рядка 4-5 і не написати:
Форма, наведена в рядках 8-12, містить два елементи: name і okbutton. Атрибут method вказує метод відправки форми POST, атрибут ж action, який вказує URL, на який відправляється форма, заповнюється значенням серверної змінної PHP_SELF - адресою виконуваного в даний момент скрипта.
">
Введіть Ваш рік народження:
">
Справа в тому, що, якщо ці POST -змінного не визначені - а так і буде, якщо форму ще не заповнювали, - PHP видасть попередження про використання неініціалізованих змінних (причому, цілком обгрунтовано: таке повідомлення дозволяє швидко знаходити труднообнаружімие помилки в іменах змінних, а також попереджає про можливі "дірках" на сайті). Можна, звичайно, помістити код з isset прямо в форму, але вийде занадто громіздко.
Розібралися? А тепер спробуйте знайти помилку в наведеному коді. Ну, не зовсім помилку, - але недолік.
htmlspecialchars ()
Не знайшли? Я підкажу. Введіть, наприклад, в поле "ім'я" подвійні лапки і який-небудь текст, наприклад, Ва "ся. Надішліть форму, і погляньте на вихідний код отриманої сторінки. У четвертому рядку буде щось на зразок:
Форма, наведена в рядках 8-12, містить два елементи: name і okbutton. Атрибут method вказує метод відправки форми POST, атрибут ж action, який вказує URL, на який відправляється форма, заповнюється значенням серверної змінної PHP_SELF - адресою виконуваного в даний момент скрипта.
Тобто - нічого хорошого. А якби хитрий користувач ввів JavaScript-код?
Для вирішення цієї проблеми необхідно скористатися функцією htmlspecialchars (), яка замінить службові символи на їх HTML-уявлення (наприклад, лапки - на "):
$ Name \u003d isset ($ _ POST [ "name"])? htmlspecialchars ($ _POST [ "name"]): "";
$ Year \u003d isset ($ _ POST [ "year"])? htmlspecialchars ($ _POST [ "year"]): "";
If (isset ($ _ POST [ "name"], $ _POST [ "year"])) (
if ($ _POST [ "name"] \u003d\u003d "") (
echo "Вкажіть ім'я!
"
;
) Else if ($ _POST [ "year"]<
1900
||
$_POST
[
"year"
] >
2004
) {
echo "Вкажіть рік народження! Допустимий діапазон значень: 1900..2004
"
;
) Else (
echo "Привіт,". $ Name. "!
"
;
$ Age \u003d 2004 - $ _POST [ "year"];
echo "Вам". $ Age. "років
"
;
}
Привіт,
" ;
}
?>
Повторіть досвід і переконайтеся, що тепер HTML-код коректний.
Запам'ятайте - функцію htmlspecialchars () необхідно використовувати завжди, коли виводиться вміст змінної, в якій можуть бути присутніми спецсимволи HTML.
phpinfo ()
Функція phpinfo () - одна з найважливіших в PHP. Вона виводить інформацію про налаштування PHP, значення всіляких конфігураційних змінних ...
Чому я згадую про неї в статті, присвяченій формам? phpinfo () - зручне засіб налагодження. phpinfo (), крім іншого, виводить значення всіх $ _GET, $ _POST і $ _SERVER змінних. Так що, якщо змінна форми "загубилася", найпростіший спосіб виявити, в чому справа - скористатися функцією phpinfo (). Для того, щоб функція виводила тільки значення змінних (і вам не довелося прокручувати десяток сторінок), її слід викликати наступним чином: phpinfo (INFO_VARIABLES); , Або - що абсолютно те ж саме - phpinfo (32);.
phpinfo (32);
?>
Або, наприклад, така ситуація: ви хочете дізнатися IP-адреса відвідувача. Ви пам'ятаєте, що відповідна змінна зберігається в масиві $ _SERVER, але - ось невдача - забули, як саме змінна називається. Знову ж, викликаємо phpinfo (32); , Шукаємо в табличці свій IP-адресу і знаходимо його - в рядку $ _SERVER [ "REMOTE_ADDR"].