Червена форма php. Изпращане – Бутон за изпращане на данни от формуляра към сървъра. Как да прехвърлите данни в друг файл директно от тялото на PHP програма, като използвате методите GET и POST

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

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

Етикети

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

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

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

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

Задача:Да предположим, че трябва да създадете падащ списък с години от 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($catalog)) // Ако такава директория съществува
{
$myfile = $_FILES [ "myfile" ][ "tmp_name" ]; // Временен файл
$myfile_name = $_FILES [ "myfile" ][ "name" ]; // Име на файл
if(! копиране ($myfile, $catalog)) ехо „Грешка при копиране на файл“. $myfile_name // Ако копирането на файла е неуспешно
}
else mkdir ("../image/" ); // Ако няма такава директория, ще я създадем
}
?>

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

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

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

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


Син
черен
Бяло

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

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.94.14
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:

Какви езици за програмиране знаете? PHP Perl

Пример 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 Изкл

Не е тайна, че най-често срещаният начин, по който HTML страница взаимодейства с уебсайт, е формуляр. Формулярът (т.е. HTML елементът, образуван от тага на формуляра) се използва и от безплатни имейл услуги, електронни магазини и много други видове сайтове.

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

Нека разгледаме по-подробно опциите за различните видове полета.

Текстови полета

В тази статия текстовите полета се дефинират като елементи, създадени от тагове за въвеждане с параметър тип текст и таг textarea. Най-лесно е да организирате обработката на формуляр, състоящ се от няколко такива полета. Списъкът по-долу показва HTML маркирането за такъв формуляр.






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

n"; ?>

Превключватели

В тази статия квадратчетата за отметка са елементи, създадени от тагове за въвеждане със стойност на параметър тип поле за отметка. Формата за използване на променлив брой „превключватели“ е изградена по абсолютно същия начин. Обърнете внимание, че изборът на конкретната стойност на бутона за избор (т.е. стойността на свойството value) не е важен. Пример е показан в списъка по-долу:






Обработката на такъв формуляр обаче се различава от обработката, описана за текстови полета. В този случай е необходимо да се определи дали посетителят на сайта е включил този или онзи ключ. Ако е разрешено, тогава съответният елемент на масива съществува; ако не, тогава той липсва. Следният списък е примерен PHP скрипт, който отпечатва активираните радио бутони:

Радио бутони

Преди да опишете обработката на радио бутоните, е необходимо да запомните как работят. Същността на радио бутоните (елементи, създадени от входни тагове със стойност на параметъра type, равна на radio ) е, че избирайки един бутон, потребителят автоматично премахва избора на друг бутон от същия набор. Бутоните се комбинират в комплект много просто: всички бутони в комплекта имат едно и също име.

Но стойностите (т.е. параметрите на стойността) на бутоните в комплекта са различни. И стойността на избрания бутон с името на комплекта ще бъде изпратена на сайта. Точно както при текстовите полета и радио бутоните, имената на наборите от радио бутони трябва да бъдат форматирани като имена на елементи на масив в PHP. Пример за такава форма е даден в следния списък:

// първи набор от бутони
// втори набор от бутони
// трети набор от бутони

Радио бутоните за обработка съчетават идеите за използване на текстови полета и радио бутони при обработката. Ако авторът на html страницата не е задал стойност по подразбиране и потребителят не е избрал конкретен бутон в набора от радио бутони, тогава този елемент няма да бъде в масива (както при радио бутоните).

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

n"; ?>

По този начин няма нищо сложно при обработката на сложни форми.

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

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

Твоето име:

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

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

Пример #2 Показване на данни от формуляр

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

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

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

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

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

Съгласно HTTP спецификацията, трябва да използвате метода POST, когато използвате формуляра, за да промените състоянието на нещо в края на сървъра. Например, ако дадена страница има формуляр, който позволява на потребителите да добавят свои собствени коментари, като този страница тук, формулярът трябва да използва POST Ако щракнете върху „Презареди“ или „Refresh“ на страница, до която сте стигнали чрез POST, това почти винаги е грешка -- не трябва да публикувате един и същ коментар два пъти -- поради което тези страници не са маркирани или кеширани.

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

преди 1 година

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

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), инжектиран във вашия трафик, който не е поставен там от вас.