Формуляр php. Начини за комуникация между браузъра и сървъра. Кой метод трябва да се използва

Добър ден на всички. Алексей Гулинин е във връзка. В последната статия научихте какво представлява сериализацията в php. В тази статия бих искал да говоря за това как да работя с формуляри в PHP. PHP езике предназначена за уеб скриптове и обработката на формуляри е може би най-важната в този процес. В днешно време няма да попаднете на сайтове, в които например няма да има регистрация или формуляр обратна връзка, или въпросник. Форуми, онлайн магазини, добавяне на коментар, изпращане на съобщение до социална мрежа- всичко това е обработка на данни, поставени в полетата на формуляра. Нека използваме пример, за да разберем как процесни форми в PHP.
Ние ще приложим проста задача: трябва да създадете 2 полета (има и фамилия), прехвърлете тези данни в скрипта action.php, в резултат на което трябва да излезе поздрав „Добре дошли, фамилно име собствено име“... Кой е забравил как се създават формуляри и какви полета има, можете да видите. Нека създадем файл test.html:

име: фамилно име:


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

Нека създадем файл action.php със следното съдържание:

Ако сега отворим файла test.html, попълним полетата на формуляра и щракнем върху бутона, ще стигнем до файла action.php, където ще се покаже съобщение. V в такъв случайбраузърът препраща към скрипта action.php и го предава през "?" всички значения атрибути на иметоразположени вътре в етикетите разделени с &. Забележете какво е заместено от $ _SERVER.

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

Методът GET е публичен, методът POST е частен, т.е. те се различават по начина, по който се предават параметрите. пример:

1) Ако използваме метод на публикация: mysite.ru/request.php.
2) Ако използваме метод получаване: mysite.ru/request.php?myname=SaAlexa&surname=SaGulynin ".

Освен това, в допълнение към масива $ _REQUEST, PHP създава масивите $ _GET и $ _POST. Нека сега изпълним нашата задача въз основа на получените знания:

Ако сега попълним формуляра и щракнем върху бутона, ще видим, че скриптът action.php ни поздравява с фамилия и собствено име. Всичко работи коректно.

Тук всичко е наред, но ако променим името на скрипта, тогава ще трябва да направим промени във файла test.html. Нека модифицираме файла action.php, така че при достъп до него или да се показва формуляр, когато не сме изпратили нищо, или поздрав, когато щракнем върху бутона:

"> Име: фамилно име:


Сега не зависим от името на скрипта, т.к ние го задаваме чрез променливата на средата $ _SERVER ["SCRIPT_NAME"]. = $ _ SERVER ["SCRIPT_NAME"]?> Еквивалентно на .
В допълнение към променливата на средата SCRIPT_NAME има много други.

Често в уеб сайтовете можете да намерите страници с HTML формуляри, хоствани на тях. Уеб формуляри са удобен начин за получаване на информация от посетителите на вашия сайт. Пример за това е - който предоставя обратна връзка на посетителите и разработчиците на сайтове. Формулярите са удобни и за разработчиците на сайтове при разработване на CMS, което позволява поддържане на основното свойство на сайта - релевантност. Тази статия се фокусира върху основите на създаването на HTML форми, тяхната обработка и методи за прехвърляне на данни от екранни форми към PHP скриптове.

1) Създайте прост формуляр

Етикети

и
задайте началото и края на формуляра. Начален маркер на формуляра
съдържа два атрибута: действиеи метод... Атрибутът action съдържа URL адреса на скрипта, който трябва да бъде извикан за обработка на скрипта. Атрибут методказва на браузъра какъв вид HTTP заявка да използва за изпращане на формуляра; възможни стойности ПУБЛИКАЦИЯи ВЗЕМЕТЕ.

Коментирайте

Основната разлика между методите POST и GET е начинът, по който се предава информацията. При метода GET параметрите се предават през адресната лента, т.е. всъщност в заглавката на HTTP заявката, докато в метода POST параметрите се предават през тялото на HTTP заявката и не се отразяват по никакъв начин под формата на адресната лента.

$ текст = nl2br ($ _POST ["моят текст"]);
?>

задача:Да приемем, че трябва да създадете падащ списък с годините от 2000 до 2050.
Решение:Необходимо е да се създаде HTML форма с елемент SELECT и PHP - скрипт за обработка на формата.

Дискусия:

Първо, нека създадем два файла: form.htmlи action.php... Във файла form.htmlще съдържа html формуляр с падащ списък. Освен това стойностите в списъка могат да бъдат посочени по два начина:

I. Ръчно въвеждане на данни:

II. Въвеждане на данни през цикъл:

Както можете да видите, вторият пример с цикъл е по-компактен. Мисля, че не е необходимо да се носи скрипта на манипулатора на тази форма, защото се обработва по същия начин като текстово поле, т.е. списъчните стойности могат да бъдат извлечени от суперглобален масив $ _POST.

Описание:

Нека създадем HTML формуляр за изпращане на файл до сървъра.




Даденият html-форма съдържа елемента преглеждайте, което отваря диалогов прозорец за избор на файл за качване на сървъра. С натискане на бутона "Прехвърляне на файл", файлът се предава на скрипта на манипулатора.

След това трябва да напишете манипулатор на скрипт action.php... Преди да напишете манипулатора, трябва да решите в коя директория ще копираме файла:

if (isset ($ _ FILES ["myfile"])) // Ако файлът съществува
{
$ catalog = "../image/"; // Нашият каталог
if (is_dir ($ каталог)) // Ако има такава директория
{
$ myfile = $ _FILES ["myfile"] ["tmp_name"]; // Временен файл
$ myfile_name = $ _FILES ["myfile"] ["name"]; // Име на файл
if (! копие ($ myfile, $ catalog)) echo "Грешка при копиране на файл"... $ myfile_name // Ако не успеете да копирате файла
}
else mkdir ("../image/"); // Ако няма такава директория, тогава ще я създадем
}
?>

Коментирайте

Ако имате доверие на потребителите да качват всякакви файлове на вашия сървър, трябва да сте изключително внимателни. Нападателите могат да инжектират "лош" код в снимка или файл и да го изпратят на сървъра. В такива случаи трябва стриктно да контролирате изтеглянето на файлове.

Този пример демонстрира как да създадете директория и да копирате файл в тази директория на сървъра.

Бих искал също да демонстрирам пример с елемента квадратче за отметка... Този елемент е малко по-различен от другите елементи по това, че ако не и един от елементите квадратче за отметка„А не е избрано, тогава суперглобалното е $ _POSTще върне празна стойност:


Син
Черен
Бяла

if (! празно ($ _ POST ["mycolor"])) echo $ _POST ["mycolor"]; // Ако е избран поне 1 елемент
иначе ехо „Изберете стойност“;
?>

PHP Форма – Работата с формуляри в PHP е осмият урок от урока по PHP. В този урок ще говорим за обработка на формуляри с PHP.

Работа с формуляри

PHP ви позволява да обработвате данни, които потребителят е въвел в полетата на формуляра. След като бутонът за изпращане е активиран, данните се изпращат на страницата с манипулатор, посочена в полето за действие на елемента

... На страницата - манипулаторът е PHP скрипт, който извършва определени операции върху получените данни, например генерира и изпраща писмо според данните, посочени от потребителя.

Предаване на данни към манипулатора.

Данните от формуляра се изпращат на сървъра като последователност от двойки име/стойност. Това означава, че името на всеки елемент от формуляр (появяващ се в атрибута NAME на етикета) е свързано със стойността на този елемент (въведена или избрана от потребителя). Форматът име/стойност, използван за предаване, е име = стойност.

Всички данни, предавани от формуляра към програмата манипулатор, се намират в следните суперглобални масиви: $ _ GET, $ _POST и $ _REQUEST.

$ _GET - съдържа всички стойности, предадени от метода GET.

$ _POST - Съдържа всички стойности, предадени от метода POST.

$ _REQUEST - Съдържа всички стойности, предадени от методите POST и GET.

фамилно име:

град:

Съобщение:

След натискане на бутонаИзпращане от този формуляр, всички данни се предават на манипулатора process.php ... Тъй като този формуляр използва методаПУБЛИКАЦИЯ , тогава всички променливи ще бъдат разположени вътре в масива$ _POST.

Сега нека създадем манипулатор:

echo "Име: ". $ _POST [„FName“]. "
»;
echo "Фамилно име: ". $ _POST ["LName"]. "
»;
ехо "Град: ". $ _POST [„Град“]. "
»;
ехо"
»;
echo "Вашето съобщение:". $ _POST ["Съобщение"];
?>

Поставете този файл в директорията със страницата на формуляра. Сега, когато използвате формуляра, данните ще бъдат предадени на манипулатора, който ще покаже съобщение, съдържащо потребителските данни.

$ _Request масив

Използване на суперглобален масив$ _Заявка много удобно, особено когато не се знае по какъв метод са прехвърлени данните.

Цикълът foreach ви позволява да преглеждате стойностите на масива $ _Request.

В този пример показваме всички стойности в масива $ _Request. Това може да се направи, за да се провери правилността на въведеното от потребителя. Тоест потребителят въвежда данни във формуляра, щраква върху изпращане, но вместо да обработи данните, на екрана му се показва съобщение с въведените от него данни и надпис потвърждаване или отказване. Тази идея е приложена на много сайтове и наистина в много програми.

В този урок научихме как да използваме PHP за обработка на формуляри. Както можете да видите, PHP е мощен инструмент за обработка на формуляри, който ви позволява да извършвате голямо разнообразие от манипулации с потребителски данни, като например съхраняване на потребителски данни в база данни за последващо оторизиране, изпращане на съобщение до пощата на потребителя и много други.

В следващия урок ще научим как да проверяваме въведеното от потребителя, преди да го обработваме директно.

HTML формите са сложни елементи на интерфейса. Те включват различни функционални елементи: полета за въвеждане и