Един от основни предимства PHP е как работи с HTML формуляри. Ключът тук е, че всеки елемент на формуляра автоматично се прави достъпен за вашите PHP програми. За подробна информациявижте раздела за използване на формуляри в PHP. Ето пример за HTML формуляр:

Пример #1 Най-простият HTML форма

Твоето име:

Твоята възраст:

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

Beispiel #2 Изобразяване на данни от формуляр

Здравейте, .
За тебгодини.

Примерен резултат от тази програма:

Здравей Сергей. Вие сте на 30 години.

Ако не вземете предвид части от код с htmlspecialchars()и (int), принципът на действие на този код трябва да е прост и ясен. htmlspecialchars()гарантира, че "специалните" HTML символи са правилно кодирани, така че злонамерен HTML или Javascript да не се вмъкнат във вашата страница. Полето за възраст, за което знаем, че трябва да е число, в което можем просто да го конвертираме цяло число, което автоматично ще се отърве от нежеланите знаци. PHP също може да направи това автоматично с разширението за филтър. Променливите $_POST["name"] и $_POST["age"] се задават автоматично за вас от PHP. По-рано използвахме $_SERVER superglobal, но тук също използваме $_POST superglobal, който съдържа всички POST данни. забележи това метод на изпращане(метод) на нашата форма е POST. Ако използваме метода ВЗЕМЕТЕ, тогава нашата информация за формуляра ще бъде в $_GET superglobal. Като алтернатива можете да използвате променливата $_REQUEST, ако източникът на данни е неуместен. Тази променлива съдържа комбинация от данни GET, POST, COOKIE.

преди 15 години

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

Трябва да използвате метода GET, когато вашият формуляр извлича нещо от сървъра и невсъщност променя нещо. Например, на форма затърсачката трябва да използва GET, тъй като търсенето в уеб сайт не трябва да променя нищо, от което клиентът може да се интересува, а маркирането или кеширането на резултатите от заявка в търсачката е също толкова полезно, колкото маркирането или кеширането на статична HTML страница.

Преди 2 години

Струва си да се изясни:

POST не е по-сигурен от GET.

Причините за избора на GET срещу POST включват различни фактори като намерението на заявката („изпращате“ ли информация?), размера на заявката (има ограничения за дължината на URL адреса и GET параметрите се изпращат в URL) и колко лесно искате действието да може да се споделя -- Например, Google Търсенията са GET, защото улесняват копирането и споделянето на заявката за търсене с някой друг просто чрез споделяне на URL адреса.

Сигурността тук е само съображение поради факта, че GET е по-лесен за споделяне от POST. Пример: не искате парола да бъде изпратена от GET, защото потребителят може да сподели получения URL адрес и по невнимание да разкрие паролата си.

Въпреки това, GET и POST са еднакво лесни за прихващане от добре позициониран злонамерен човек, ако не внедрите TLS/SSL, за да защитите самата мрежова връзка.

Всички формуляри, изпратени през HTTP (обикновено порт 80), са несигурни и днес (2017 г.) няма много основателни причини публичен уебсайт да не използва HTTPS (което всъщност е HTTP + сигурност на транспортния слой).

Като бонус, ако използвате TLS, вие минимизирате риска вашите потребители да получат код (ADs), инжектиран във вашия трафик, който не е поставен там от вас.

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

За да направим това, ще създадем два файла - format.phpи mail.php. Първият файл ще съдържа само формуляр с полета за въвеждане от потребителя. Вътре в етикета форма- бутон "Изпрати"и атрибут действие, което се отнася до манипулатора - mail.php, именно до него се осъществява достъп до данните от формата при натискане на бутона "Изпрати". В нашия пример данните от формуляра се изпращат до уеб страница, наречена "/mail.php". Тази страница съдържа скрипт за PHPкойто обработва данните от формуляра:


Данните на формуляра се изпращат от метода ПУБЛИКУВАНЕ(обработен като $_POST). $_POSTе масив от променливи, предадени на текущия скрипт чрез метода ПУБЛИКУВАНЕ.

По-долу можете да видите съдържанието на файла format.php, чиито полета се попълват от самия потребител на даден уебсайт. Всички полета за въвеждане на данни трябва да имат атрибут име, ние сами предписваме стойностите, въз основа на логиката.




Форма за обратна връзка в PHP с изпращане по пощата


Форма за обратна връзка в PHP







Остави съобщение:
Твоето име:



Електронна поща:

Телефонен номер:

съобщение:

Текстовата област може да съдържа неограничен брой знаци -->







Ето как формата изглежда визуално в браузъра.

След това напишете кода за файла mail.php. Ние измисляме имената на самите променливи. AT PHPпроменливата започва със знак $ , последвано от името на променливата. Текстова стойностпроменливата е оградена в кавички. С помощта на променливи, съдържанието на формуляра се изпраща на имейла на администратора, просто чрез заместване на името на елемента на формуляра - стойност в квадратни скоби име.

$до=" [имейл защитен]"; // имейл на получателя на данните от формата
$tema = "Формуляр за връзка с PHP"; // предмет на получения имейл
$message = "Вашето име: ".$_POST["име"]."
";//присвоете на променливата стойността, получена от формата име=име
$message .= "Имейл: ".$_POST["имейл"]."
"; //получава се от формата name=email
$message .= "Телефонен номер: ".$_POST["телефон"]."
"; //получава се от формата име=телефон
$message .= "Съобщение: ".$_POST["съобщение"]."
"; //получава се от формата име=съобщение
$headers = "MIME-версия: 1.0" . "\r\n"; // заглавката съвпада с формат плюс знак за нов ред
$headers .= "Content-type: text/html; charset=utf-8" . "\r\n"; // показва типа съдържание, което се изпраща
поща ($до, $тема, $съобщение, $заглавия); //изпраща стойностите на променливите до имейла на получателя
?>

Така че данните от масива $_POSTще бъдат предадени на съответните променливи и изпратени до пощата с помощта на функцията поща. Нека попълним нашия формуляр и натиснете бутона за изпращане. Не забравяйте да включите своя имейл. Писмото пристигна веднага.

JavaScript е блокиран във вашия браузър. Разрешете JavaScript, за да работи този сайт!

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

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

Предварително дефинирани променливи

PHP има редица предварително дефинирани променливи, които не се променят, когато всички приложения работят в определена среда. Те се наричат ​​още променливи на средата или променливи на средата. Те отразяват настройките на средата на уеб сървъра на Apache, както и информация за заявката. този браузър. Възможно е да получите стойностите на URL адреса, низа на заявката и други елементи на HTTP заявката.

Всички предварително дефинирани променливи се съдържат в асоциативния масив $GLOBALS. В допълнение към променливите на средата, този масив съдържа и глобални променливи, дефинирани в програмата.

Пример 1

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

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

ПроменливаОписаниеСъдържание
$_SERVER["HTTP_USER_AGENT"]Име и версия на клиентаMozilla/5.0 (съвместим; Googlebot/2.1; +http://www.google.com/bot.html)
$_SERVER["REMOTE_ADDR"]IP адрес144.76.78.3
getenv("HTTP_X_FORWARDED_FOR")IP адрес на вътрешен клиент
$_SERVER["REQUEST_METHOD"]Метод на заявка (GET или POST)ВЗЕМЕТЕ
$_SERVER["QUERY_STRING"]При GET заявка кодираните данни се предават заедно с URL адреса
$_SERVER["REQUEST_URL"]Пълен клиентски адрес, включително низ за заявка
$_SERVER["HTTP_REFERER"]URL на страницата, от която е направена заявката
$_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 като $value) ехо "
  • $стойност"; ехо "
"; ?>

Пример 4. Приемане на стойности от квадратчета за отметка

$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(), като изпратите на браузъра заглавката „Местоположение“, можете да пренасочите потребителя към нова страница.

Например:

Прехвърляне на файл към сървъра. Качи файл. Качване

PHP ви позволява да изпращате файлове към сървъра. HTML формулярът за изпращане на файл трябва да съдържа аргумента enctype="multipart/form-data" .

Освен това формулярът трябва да има скрито поле с име max_file_size преди полето за копиране на файл. Това скрито поле трябва да съдържа максималния размер на прехвърления файл (обикновено не повече от 2 MB).

Самото поле за прехвърляне на файл е нормален INPUT елемент с аргумент type="file" .

Например:

"method="post">

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

Пример 8

Обработка на прехвърления файл "; echo "име: ".$_FILES["потребителски файл"]["име"]."
"; echo "размер: ".$_FILES["userfile"]["размер"]."
"; echo "тип: ".$_FILES["userfile"]["тип"]."
"; } ?>
"method="post">

Примери за качване на файлове на сървъра

Ако има проблеми с конвертирането на качения файл от сървъра, символът с кода 0x00заменен с интервал (символ с код 0x20), добавете към файла httpd.confот директорията на Apache (/usr/local/apache) следните редове.

CharsetRecodeMultipartForms Изкл