Відмінності між версіями «Передача параметрів в PHP»

Матеріал з Вікі ЦДУ
Перейти до: навігація, пошук
 
(не показані 10 проміжних версій 2 учасників)
Рядок 1: Рядок 1:
Современные веб-ресурсы не просто предоставляют информацию посетителю, но и взаимодействуют с ним. Для взаимодействия с пользователем нужно получать некоторую информацию от него. Для получения данных есть несколько методов, очень распространенные методы <b>GET</b> и <b>POST</b>. И соответственно в <b>PHP</b> есть поддержка этих методов передачи данных <b>GET</b> и <b>POST</b>. Посмотрим, как работают эти методы.
+
Сучасні веб-ресурси не просто надають інформацію відвідувачу, але і взаємодіють з ним. Для взаємодії з користувачем потрібно отримувати деяку інформацію від нього. Для отримання даних є декілька методів, дуже поширені методи GET і POST. І відповідно в PHP є підтримка цих методів передачі даних GET і POST. Подивимося, як працюють ці методи.
<p><br><font color="#808080"><span class="text_bold">Метод GET</span></font></p>
+
 
<p>Данные <b>методом GET</b> передаются путем их добавления к URL-адресу вызываемого сценария, предназначенного для обработки полученной информации. Для пояснения данного метода наберите в адресной строке браузера URL-адрес ресурса и добавьте сначала знак вопроса (<span class="text_bold">?</span>), а затем строчку <span class="text_italic">num=10</span>. Например</p>
+
== '''Метод GET ''' ==
<div class="block_konteiner"><div class="zagol_block_code"> Код </div><div class="block_code">http://домен.ru/script.php?num=10</div></div>Если у вас локальный сервер, то обычно домен будет <span class="text_italic">localhost</span>, и тогда предыдущая запись будет выглядеть<div class="block_konteiner"><div class="zagol_block_code"> Код </div><div class="block_code">http://localhost/script.php?num=10</div></div>В этом случае мы передаем параметр <span class="text_bold">num</span> равный 10. Для добавления следующих параметров сценарию нужно использовать разделитель - амперсант (<span class="text_bold">&amp;</span>), например<div class="block_konteiner"><div class="zagol_block_code"> Код </div><div class="block_code">http://домен.ru/script.php?num=10&amp;type=new&amp;v=text</div></div>В данном случае мы передали скрипту три параметра: <span class="text_bold">num</span> со значением 10, <span class="text_bold">type</span> со значением "<span class="text_italic">new</span>" и <span class="text_bold">v</span> со значением "<span class="text_italic">text</span>".<br>Для получения этих параметров в скрипте нужно использовать встроенный массив <b>$_GET</b>. Ключами этого массива будут названия параметров. В нашем случае нужно использовать <span class="text_italic">$_GET["num"], $_GET["type"],$_GET["v"]</span>. Эти элементы массива и будут содержать значения переданных параметров. Для демонстрации этого примера создайте файл <span class="text_italic">script.php</span> следующего содержания<div class="block_konteiner"><div class="zagol_block_code"> Код </div><div class="block_code">&lt;html&gt;<br>&lt;head&gt;<br>&lt;title&gt;Проверка метода GET в PHP&lt;/title&gt;<br>&lt;/head&gt;<br>&lt;body&gt;<br>&lt;?php<br>echo ($_GET["num"]."&lt;br&gt;");<br>echo ($_GET["type"]."&lt;br&gt;");<br>echo ($_GET["v"]);<br>?&gt;<br>&lt;/body&gt;<br>&lt;/html&gt;</div></div>И теперь вызовите этот файл в браузере<div class="block_konteiner"><div class="zagol_block_code"> Код </div><div class="block_code">http://путь/script.php?num=10&amp;type=new&amp;v=text</div></div>и вы увидите переданные параметры в окне браузера. Но если вы вызовите этот файл без дополнительных параметров <span class="text_italic">http://путь/script.php</span> , то увидите ошибки, которые выдаст интерпретатор <b>PHP</b>, о том, что таких элементов массива <span class="text_bold">$_GET</span> нет. Проверке данных получаемых от пользователя можно посветить не одну статью, поэтому в этой статье я не буду затрагивать этот момент.<br>Как вы, наверное, понимаете заставлять пользователя набирать данные в адресной строке браузера не очень хорошо и совсем неудобно. Поэтому для приема данных от пользователя нужно использовать <span class="text_italic">html</span>-формы. Напишем простенькую <span class="text_italic">html</span>-форму.<div class="block_konteiner"><div class="zagol_block_code"> Код </div><div class="block_code">&lt;form action="script.php" method="get" &gt;<br>Введите число &lt;input type="text" name="num" value="" /&gt;&lt;br/&gt;<br>У Вас есть компьютер?  &lt;select name="type"&gt;<br>&lt;option value="yes"&gt;Да&lt;/option&gt;<br>&lt;option value="no"&gt;Нет&lt;/option&gt;<br>&lt;/select&gt;&lt;br/&gt;<br>Ваш комментарий:&lt;br/&gt;<br>&lt;textarea name="v" &gt;&lt;/textarea&gt;&lt;br/&gt;<br>&lt;input type="submit" name="bsubmit" value="Отправить" /&gt;<br>&lt;/form&gt;</div></div>Немного прокомментирую созданную форму. Формы создаются тегом <span class="text_bold">form</span>. Поля формы создаются тегами <span class="text_bold">input</span>, <span class="text_bold">select</span>, <span class="text_bold">textarea</span> (подробнее можно почитать формы в HTML). В теге <span class="text_bold">form</span> в атрибуте <span class="text_bold">action</span> указывается URL-адрес скрипта, который получит данные формы. В нашем случае мы указали уже существующий у нас файл <span class="text_italic">script.php</span>. Атрибут <span class="text_bold">method</span> задает метод отправки данных. Мы указали метод <b>GET</b>. Теперь мы знаем, какому файлу будут переданы данные формы, и каким способом, осталось разобраться, где их там искать?!<br>Данные этой формы будут переданы веб-ресурсу браузером путем добавления их к URL-адресу: сначала будет знак вопроса (<span class="text_bold">?</span>), затем будут представлены параметры разделенные амперсантом (<span class="text_bold">&amp;</span>). Название параметра будет браться из атрибута <span class="text_bold">name</span>, которое должно быть прописано у любого поля формы. Значение параметра будет зависеть от типа поля. Если поле является текстовым, то значением будет введенный пользователем текст. Если же поле будет представлять собой список, группу переключателей или флажков, то значением параметра будет значение атрибута <span class="text_bold">value</span> выбранного элемента. Поясню на примере нашей формы. Если пользователь введет в поле <span class="text_bold">input</span>  число 10, то названием параметра будет <span class="text_bold">num</span> (значение атрибута <span class="text_bold">name</span> тега <span class="text_bold">input</span>), а значением будет 10 (введенное пользователем число). Соответственно браузер сформирует пару "<span class="text_italic">num=10</span>". Если пользователь из списка выберет вариант "Да", то названием параметра будет <span class="text_bold">type</span> (значение атрибута <span class="text_bold">name</span> тега <span class="text_bold">select</span>), а значением будет <span class="text_italic">yes</span> (значение атрибута <span class="text_bold">value</span> тега <span class="text_bold">option</span>). Соответственно браузер сформирует пару "<span class="text_italic">type=yes</span>".<br>Теперь эту форму разместим на странице <span class="text_italic">forma.php</span>.<div class="block_konteiner"><div class="zagol_block_code"> Код </div><div class="block_code">&lt;html&gt;<br>&lt;head&gt;<br>&lt;title&gt;Форма для передачи данных методом GET и PHP&lt;/title&gt;<br>&lt;/head&gt;<br>&lt;body&gt;<br>&lt;form action="script.php" method="get" &gt;<br>Введите число &lt;input type="text" name="num" value="" /&gt;&lt;br/&gt;<br>У Вас есть компьютер?  &lt;select name="type"&gt;<br>&lt;option value="yes"&gt;Да&lt;/option&gt;<br>&lt;option value="no"&gt;Нет&lt;/option&gt;<br>&lt;/select&gt;&lt;br/&gt;<br>Ваш комментарий:&lt;br/&gt;<br>&lt;textarea name="v" &gt;&lt;/textarea&gt;&lt;br/&gt;<br>&lt;input type="submit" name="bsubmit" value="Отправить" /&gt;<br>&lt;/form&gt;<br>&lt;/body&gt;<br>&lt;/html&gt;</div></div>Введите в поля формы какие-либо значения и нажмите кнопку "Отправить". После нажатия кнопки браузер откроет другую страницу (<span class="text_italic">script.php</span>), и в окне браузера будут отображены данные, которые вы ввели. Я думаю понятно почему: браузер передаст данные сценарию <span class="text_italic">script.php</span>, и в скрипте эти данные будут обработаны и выведены на экран.<p><br><font color="#808080"><span class="text_bold">Метод POST</span></font></p><p>Теперь давайте рассмотрим, как работает метод <b>POST</b>.<br>Для отправки данных методом <b>POST</b> нужно использовать <span class="text_italic">HTML</span>-формы. Как мы помним, что за способ отправки данных формы отвечает атрибут <span class="text_bold">method</span> тега <span class="text_bold">form</span>. Поэтому нужно в атрибуте <span class="text_bold">method</span> тега <span class="text_bold">form</span> указать значение <span class="text_bold">POST</span>. В остальном форма может быть та же, как и для метода <span class="text_bold">GET</span>. Изменим нашу форму, которую мы уже использовали для передачи данных способом <span class="text_bold">GET</span>, для передачи методом <span class="text_bold">POST</span>.</p><div class="block_konteiner"><div class="zagol_block_code"> Код </div><div class="block_code">&lt;form action="script_post.php" method="post" &gt;<br>Введите число &lt;input type="text" name="num" value="" /&gt;&lt;br/&gt;<br>У Вас есть компьютер?  &lt;select name="type"&gt;<br>&lt;option value="yes"&gt;Да&lt;/option&gt;<br>&lt;option value="no"&gt;Нет&lt;/option&gt;<br>&lt;/select&gt;&lt;br/&gt;<br>Ваш комментарий:&lt;br/&gt;<br>&lt;textarea name="v" &gt;&lt;/textarea&gt;&lt;br/&gt;<br>&lt;input type="submit" name="bsubmit" value="Отправить" /&gt;<br>&lt;/form&gt;</div></div>Как видите, форма осталась та же за исключением атрибутов <span class="text_bold">method</span> и <span class="text_bold">action</span>. Теперь данные будут передаваться сценарию <span class="text_italic">script_post.php</span>. Поместим нашу форму на странице <span class="text_italic">forma_post.php</span>.<div class="block_konteiner"><div class="zagol_block_code"> Код </div><div class="block_code">&lt;html&gt;<br>&lt;head&gt;<br>&lt;title&gt;Форма для передачи данных методом POST и PHP&lt;/title&gt;<br>&lt;/head&gt;<br>&lt;body&gt;<br>&lt;form action="script_post.php" method="post" &gt;<br>Введите число &lt;input type="text" name="num" value="" /&gt;&lt;br/&gt;<br>У Вас есть компьютер?  &lt;select name="type"&gt;<br>&lt;option value="yes"&gt;Да&lt;/option&gt;<br>&lt;option value="no"&gt;Нет&lt;/option&gt;<br>&lt;/select&gt;&lt;br/&gt;<br>Ваш комментарий:&lt;br/&gt;<br>&lt;textarea name="v" &gt;&lt;/textarea&gt;&lt;br/&gt;<br>&lt;input type="submit" name="bsubmit" value="Отправить" /&gt;<br>&lt;/form&gt;<br>&lt;/body&gt;<br>&lt;/html&gt;</div></div>Теперь надо написать сценарий, который будет обрабатывать данные нашей формы.<br>Для получения в скрипте данных переданным методом <b>POST</b> нужно использовать встроенный массив <b>$_POST</b>. Ключами этого массива будут названия параметров. В нашем случае нужно использовать <span class="text_italic">$_POST["num"], $_POST["type"],$_POST["v"]</span>. Эти элементы массива и будут содержать значения переданных данных. Как видите отличие от использования способа <span class="text_bold">GET</span>, выражается лишь в использовании массива <span class="text_bold">$_POST</span>. Поэтому нам не составит труда написать файл <span class="text_italic">script_post.php</span>:<div class="block_konteiner"><div class="zagol_block_code"> Код </div><div class="block_code">&lt;html&gt;<br>&lt;head&gt;<br>&lt;title&gt;Проверка метода POST в PHP&lt;/title&gt;<br>&lt;/head&gt;<br>&lt;body&gt;<br>&lt;?php<br>echo ($_POST["num"]."&lt;br&gt;");<br>echo ($_POST["type"]."&lt;br&gt;");<br>echo ($_POST["v"]);<br>?&gt;<br>&lt;/body&gt;<br>&lt;/html&gt;</div></div>Теперь откройте файл <span class="text_italic">forma_post.php</span> в браузере. Введите какие-нибудь данные в поля формы и нажмите кнопочку "Отправить". Сейчас, наверное, вы заметили отличие метода <span class="text_bold">POST</span> от <span class="text_bold">GET</span> - в адресной строке браузера не появились данные формы. Данные методом <b>POST</b> нельзя передать через адресную строку браузера. Это существенное отличие нужно запомнить.<br>В <b>PHP</b> в независимости, каким способом были отправлены данные - методом <span class="text_bold">POST</span> или методом <span class="text_bold">GET</span> - получить данные можно используя массив <span class="text_bold">$_REQUEST</span>.<p><font color="#808080"><span class="text_bold">Сравнение методов GET и POST</span></font></p><p>При использовании метода <span class="text_bold">GET</span> данные передаются путем добавления к URL-адресу. Таким образом, они будут видны пользователю, что с точки зрения безопасности не всегда хорошо. Также максимальный объем передаваемых данных будет зависеть от браузера - от максимально-допустимого  количества символов адресной строке браузера.<br>При использовании метода <span class="text_bold">POST</span> данные не будут видны пользователю (не отображаются в адресной строке браузера). И поэтому они более защищены, а, следовательно, и программа обрабатывающая эти данные более защищена в плане безопасности. Также объем передаваемых данных практически ни чем не ограничен. <br>Выбирая способ передачи данных нужно учитывать приведенные особенности и останавливаться на наиболее приемлемом методе.</p>
+
 
 +
Дані методом GET передаються шляхом їх додавання до URL-адресою викликається сценарію, призначеного для обробки отриманої інформації. Для пояснення даного методу наберіть в адресному рядку браузера URL-адресу ресурсу і додайте спочатку знак запитання (?), А потім рядок num = 10. Наприклад
 +
Код
 +
http://домен.ru/script.php?num=10
 +
Якщо у вас локальний сервер, то зазвичай домен буде localhost, і тоді попередній запис буде виглядати
 +
Код
 +
http://localhost/script.php?num=10
 +
У цьому випадку ми передаємо параметр num рівний 10. Щоб додати наступних параметрів сценарієм потрібно використовувати розділювач - амперсант (&), наприклад
 +
Код
 +
http://домен.ru/script.php?num=10&type=new&v=text
 +
У даному випадку ми передали скрипту три параметри: num зі значенням 10, type зі значенням "new" і v зі значенням "text".
 +
Для отримання цих параметрів у скрипті потрібно використовувати вбудований масив $ _GET. Ключами цього масиву будуть назви параметрів. У нашому випадку потрібно використовувати $ _GET ["num"], $ _GET ["type "],$_ GET [" v "]. Ці елементи масиву і будуть містити значення переданих параметрів. Для демонстрації цього прикладу створіть файл script.php такого змісту
 +
Код
 +
<html>
 +
<head>
 +
<title>Проверка метода GET в PHP</title>
 +
</head>
 +
<body>
 +
<?php
 +
echo ($_GET["num"]."<br>");
 +
echo ($_GET["type"]."<br>");
 +
echo ($_GET["v"]);
 +
?>
 +
</body>
 +
</html>
 +
І тепер викличте цей файл у браузері
 +
Код
 +
http://путь/script.php?num=10&type=new&v=text
 +
і ви побачите передані параметри у вікні браузера. Але якщо ви викличте цей файл без додаткових параметрів http://путь/script.php, то побачите помилки, які видасть інтерпретатор PHP, про те, що таких елементів масиву $ _GET немає. Як ви, напевно, розумієте примушувати користувача набирати дані в адресному рядку браузера не дуже добре і зовсім незручно. Тому для прийому даних від користувача потрібно використовувати html-форми. Напишемо простеньку html-форму.
 +
Код
 +
<form action="script.php" method="get" >
 +
Введіть число <input type="text" name="num" value="" /><br/>
 +
У вас є компютер? <select name="type">
 +
<option value="yes">Так</option>
 +
<option value="no">Ні</option>
 +
</select><br/>
 +
Ваші коментарі:<br/>
 +
<textarea name="v" ></textarea><br/>
 +
<input type="submit" name="bsubmit" value="Отправить" />
 +
</form>
 +
Трохи прокоментую створену форму. Форми створюються тегом form. Поля форми створюються тегами input, select, textarea (докладніше можна почитати про форми в HTML). У тезі form в атрибуті action вказується URL-адреса скрипта, який отримає дані форми. У нашому випадку ми вказали вже існуючий у нас файл script.php. Атрибут method задає метод відправлення даних. Ми вказали метод GET. Тепер ми знаємо, якому файлу будуть передані дані форми, і яким способом, залишилося розібратися, де їх там шукати? Дані цієї форми будуть передані веб-ресурсу браузером шляхом додавання їх до URL-адреси: спочатку буде знак запитання (?), Потім будуть представлені параметри розділені амперсантом (&). Назва параметру буде братися з атрибуту name, яке має бути прописано у будь-якому полі форми. Значення параметра буде залежати від типу поля. Якщо поле є текстовим, то значенням буде введений користувачем текст. Якщо ж поле буде представляти собою список, групу перемикачів або прапорців, то значенням параметра буде значення атрибута value вибраного елемента. Поясню на прикладі нашої форми. Якщо користувач введе в полі input число 10, то назвою параметра буде num (значення атрибута name тега input), а значенням буде 10 (введене користувачем число). Відповідно браузер сформує пару "num = 10". Якщо користувач зі списку вибере варіант "Так", то назвою параметра буде type (значення атрибута name тега select), а значенням буде yes (значення атрибута value тега option). Відповідно браузер сформує пару "type = yes". Тепер цю форму розмістимо на сторінці forma.php.  
 +
Код
 +
<html>
 +
<head>
 +
<title>Форма для передачі даних методом GET і PHP</title>
 +
</head>
 +
<body>
 +
<form action="script.php" method="get" >
 +
Введіть число <input type="text" name="num" value="" /><br/>
 +
У вас є компютер? <select name="type">
 +
<option value="yes">Так</option>
 +
<option value="no">Ні</option>
 +
</select><br/>
 +
Ваші коментарі:<br/>
 +
<textarea name="v" ></textarea><br/>
 +
<input type="submit" name="bsubmit" value="Отправить" />
 +
</form>
 +
</body>
 +
</html>
 +
Введіть у поля форми будь-які значення та натисніть кнопку "Відправити". Після натискання кнопки браузер відкриє іншу сторінку (script.php), і у вікні браузера будуть відображені дані, які ви ввели. Я думаю зрозуміло чому: браузер передасть дані сценарієм script.php, і в скрипті ці дані будуть оброблені і виведені на екран.
 +
 
 +
== '''Метод POST''' ==
 +
 
 +
Тепер давайте розглянемо, як працює метод POST.
 +
Для відправлення даних методом POST потрібно використовувати HTML-форми. Як ми пам'ятаємо, що за спосіб відсилання даних форми відповідає атрибут method тега form. Тому потрібно в атрибуті method тега form вказати значення POST. В іншому форма може бути така ж, як і для методу GET. Змінимо нашу форму, яку ми вже використали для передачі даних способом GET, для передачі методом POST.
 +
Код
 +
<form action="script_post.php" method="post" >
 +
Введіть чісло <input type="text" name="num" value="" /><br/>
 +
У вас є компютер? <select name="type">
 +
<option value="yes">Так</option>
 +
<option value="no">Ні</option>
 +
</select><br/>
 +
Ваші коментарі:<br/>
 +
<textarea name="v" ></textarea><br/>
 +
<input type="submit" name="bsubmit" value="Отправить" />
 +
</form>
 +
Як бачите, форма залишилася такаж за винятком атрибутів method і action. Тепер дані будуть передаватися сценарієм script_post.php. Помістимо нашу форму на сторінці forma_post.php.
 +
Код
 +
<html>
 +
<head>
 +
<title>Форма для передачі даних методом POST і PHP</title>
 +
</head>
 +
<body>
 +
<form action="script_post.php" method="post" >
 +
Введіть число <input type="text" name="num" value="" /><br/>
 +
У вас є компютер? <select name="type">
 +
<option value="yes">Так</option>
 +
<option value="no">Ні</option>
 +
</select><br/>
 +
Ваші коментарі:<br/>
 +
<textarea name="v" ></textarea><br/>
 +
<input type="submit" name="bsubmit" value="Отправить" />
 +
</form>
 +
</body>
 +
</html>
 +
Тепер треба написати сценарій, який буде обробляти дані нашої форми.  
 +
Для отримання в скрипті даних переданим методом POST потрібно використовувати вбудований масив $ _POST. Ключами цього масиву будуть назви параметрів. У нашому випадку потрібно використовувати $ _POST ["num"], $ _POST ["type "],$_ POST [" v "]. Ці елементи масиву і будуть містити значення переданих даних. Як бачите відміну від використання способу GET, виражається лише у використанні масиву $ _POST. Тому нам не важко буде написати файл script_post.php:
 +
Код
 +
<html>
 +
<head>
 +
<title>Проверка метода POST в PHP</title>
 +
</head>
 +
<body>
 +
<?php
 +
echo ($_POST["num"]."<br>");
 +
echo ($_POST["type"]."<br>");
 +
echo ($_POST["v"]);
 +
?>
 +
</body>
 +
</html>
 +
Тепер відкрийте файл forma_post.php в браузері. Введіть які-небудь дані в поля форми і натисніть кнопочку "Відправити". Зараз, напевно, ви помітили відміну методу POST від GET - в адресному рядку браузера не з'явилися дані форми. Дані методом POST не можна передати через адресний рядок браузера. Це суттєва відмінність потрібно запам'ятати.
 +
У PHP в незалежності, яким способом були відправлені дані - методом POST або методом GET - отримати дані можна використовуючи масив $ _REQUEST.
 +
 
 +
== '''Порівняння методів GET і POST''' ==
 +
 
 +
При використанні методу GET дані передаються шляхом додавання до URL-адреси. Таким чином, вони будуть видимі користувачеві, що з точки зору безпеки не завжди добре. Також максимальний обсяг переданих даних буде залежати від браузера - від максимально-допустимої кількості символів в адресному рядку браузера.
 +
При використанні методу POST дані не будуть видимі користувачеві (не відображаються в адресному рядку браузера). І тому вони більш захищені, а, отже, і програма яка обробляє ці дані більш захищена в плані безпеки. Також обсяг переданих даних практично ні чим не обмежений.
 +
Вибираючи спосіб передачі даних потрібно враховувати наведені особливості і зупинятися на найбільш прийнятному методі.
 +
 
 +
[[category:Інтернет-програмування|*]]
 +
 
 +
[[category:Навчальні проекти]]

Поточна версія на 08:23, 7 квітня 2012

Сучасні веб-ресурси не просто надають інформацію відвідувачу, але і взаємодіють з ним. Для взаємодії з користувачем потрібно отримувати деяку інформацію від нього. Для отримання даних є декілька методів, дуже поширені методи GET і POST. І відповідно в PHP є підтримка цих методів передачі даних GET і POST. Подивимося, як працюють ці методи.

Метод GET

Дані методом GET передаються шляхом їх додавання до URL-адресою викликається сценарію, призначеного для обробки отриманої інформації. Для пояснення даного методу наберіть в адресному рядку браузера URL-адресу ресурсу і додайте спочатку знак запитання (?), А потім рядок num = 10. Наприклад Код

http://домен.ru/script.php?num=10

Якщо у вас локальний сервер, то зазвичай домен буде localhost, і тоді попередній запис буде виглядати Код

http://localhost/script.php?num=10

У цьому випадку ми передаємо параметр num рівний 10. Щоб додати наступних параметрів сценарієм потрібно використовувати розділювач - амперсант (&), наприклад Код

http://домен.ru/script.php?num=10&type=new&v=text

У даному випадку ми передали скрипту три параметри: num зі значенням 10, type зі значенням "new" і v зі значенням "text". Для отримання цих параметрів у скрипті потрібно використовувати вбудований масив $ _GET. Ключами цього масиву будуть назви параметрів. У нашому випадку потрібно використовувати $ _GET ["num"], $ _GET ["type "],$_ GET [" v "]. Ці елементи масиву і будуть містити значення переданих параметрів. Для демонстрації цього прикладу створіть файл script.php такого змісту Код

<html>
<head>
<title>Проверка метода GET в PHP</title>
</head>
<body>
<?php
echo ($_GET["num"]."
"); echo ($_GET["type"]."
"); echo ($_GET["v"]); ?> </body> </html>

І тепер викличте цей файл у браузері Код

http://путь/script.php?num=10&type=new&v=text

і ви побачите передані параметри у вікні браузера. Але якщо ви викличте цей файл без додаткових параметрів http://путь/script.php, то побачите помилки, які видасть інтерпретатор PHP, про те, що таких елементів масиву $ _GET немає. Як ви, напевно, розумієте примушувати користувача набирати дані в адресному рядку браузера не дуже добре і зовсім незручно. Тому для прийому даних від користувача потрібно використовувати html-форми. Напишемо простеньку html-форму. Код

<form action="script.php" method="get" >
Введіть число <input type="text" name="num" value="" />
У вас є компютер? <select name="type"> <option value="yes">Так</option> <option value="no">Ні</option> </select>
Ваші коментарі:
<textarea name="v" ></textarea>
<input type="submit" name="bsubmit" value="Отправить" /> </form>

Трохи прокоментую створену форму. Форми створюються тегом form. Поля форми створюються тегами input, select, textarea (докладніше можна почитати про форми в HTML). У тезі form в атрибуті action вказується URL-адреса скрипта, який отримає дані форми. У нашому випадку ми вказали вже існуючий у нас файл script.php. Атрибут method задає метод відправлення даних. Ми вказали метод GET. Тепер ми знаємо, якому файлу будуть передані дані форми, і яким способом, залишилося розібратися, де їх там шукати? Дані цієї форми будуть передані веб-ресурсу браузером шляхом додавання їх до URL-адреси: спочатку буде знак запитання (?), Потім будуть представлені параметри розділені амперсантом (&). Назва параметру буде братися з атрибуту name, яке має бути прописано у будь-якому полі форми. Значення параметра буде залежати від типу поля. Якщо поле є текстовим, то значенням буде введений користувачем текст. Якщо ж поле буде представляти собою список, групу перемикачів або прапорців, то значенням параметра буде значення атрибута value вибраного елемента. Поясню на прикладі нашої форми. Якщо користувач введе в полі input число 10, то назвою параметра буде num (значення атрибута name тега input), а значенням буде 10 (введене користувачем число). Відповідно браузер сформує пару "num = 10". Якщо користувач зі списку вибере варіант "Так", то назвою параметра буде type (значення атрибута name тега select), а значенням буде yes (значення атрибута value тега option). Відповідно браузер сформує пару "type = yes". Тепер цю форму розмістимо на сторінці forma.php. Код

<html>
<head>
<title>Форма для передачі даних методом GET і PHP</title>
</head>
<body>
<form action="script.php" method="get" >
Введіть число <input type="text" name="num" value="" />
У вас є компютер? <select name="type"> <option value="yes">Так</option> <option value="no">Ні</option> </select>
Ваші коментарі:
<textarea name="v" ></textarea>
<input type="submit" name="bsubmit" value="Отправить" /> </form> </body> </html>

Введіть у поля форми будь-які значення та натисніть кнопку "Відправити". Після натискання кнопки браузер відкриє іншу сторінку (script.php), і у вікні браузера будуть відображені дані, які ви ввели. Я думаю зрозуміло чому: браузер передасть дані сценарієм script.php, і в скрипті ці дані будуть оброблені і виведені на екран.

Метод POST

Тепер давайте розглянемо, як працює метод POST. Для відправлення даних методом POST потрібно використовувати HTML-форми. Як ми пам'ятаємо, що за спосіб відсилання даних форми відповідає атрибут method тега form. Тому потрібно в атрибуті method тега form вказати значення POST. В іншому форма може бути така ж, як і для методу GET. Змінимо нашу форму, яку ми вже використали для передачі даних способом GET, для передачі методом POST. Код

<form action="script_post.php" method="post" >
Введіть чісло <input type="text" name="num" value="" />
У вас є компютер? <select name="type"> <option value="yes">Так</option> <option value="no">Ні</option> </select>
Ваші коментарі:
<textarea name="v" ></textarea>
<input type="submit" name="bsubmit" value="Отправить" /> </form>

Як бачите, форма залишилася такаж за винятком атрибутів method і action. Тепер дані будуть передаватися сценарієм script_post.php. Помістимо нашу форму на сторінці forma_post.php. Код

<html>
<head>
<title>Форма для передачі даних методом POST і PHP</title>
</head>
<body>
<form action="script_post.php" method="post" >
Введіть число <input type="text" name="num" value="" />
У вас є компютер? <select name="type"> <option value="yes">Так</option> <option value="no">Ні</option> </select>
Ваші коментарі:
<textarea name="v" ></textarea>
<input type="submit" name="bsubmit" value="Отправить" /> </form> </body> </html>

Тепер треба написати сценарій, який буде обробляти дані нашої форми. Для отримання в скрипті даних переданим методом POST потрібно використовувати вбудований масив $ _POST. Ключами цього масиву будуть назви параметрів. У нашому випадку потрібно використовувати $ _POST ["num"], $ _POST ["type "],$_ POST [" v "]. Ці елементи масиву і будуть містити значення переданих даних. Як бачите відміну від використання способу GET, виражається лише у використанні масиву $ _POST. Тому нам не важко буде написати файл script_post.php: Код

<html>
<head>
<title>Проверка метода POST в PHP</title>
</head>
<body>
<?php
echo ($_POST["num"]."
"); echo ($_POST["type"]."
"); echo ($_POST["v"]); ?> </body> </html>

Тепер відкрийте файл forma_post.php в браузері. Введіть які-небудь дані в поля форми і натисніть кнопочку "Відправити". Зараз, напевно, ви помітили відміну методу POST від GET - в адресному рядку браузера не з'явилися дані форми. Дані методом POST не можна передати через адресний рядок браузера. Це суттєва відмінність потрібно запам'ятати. У PHP в незалежності, яким способом були відправлені дані - методом POST або методом GET - отримати дані можна використовуючи масив $ _REQUEST.

Порівняння методів GET і POST

При використанні методу GET дані передаються шляхом додавання до URL-адреси. Таким чином, вони будуть видимі користувачеві, що з точки зору безпеки не завжди добре. Також максимальний обсяг переданих даних буде залежати від браузера - від максимально-допустимої кількості символів в адресному рядку браузера. При використанні методу POST дані не будуть видимі користувачеві (не відображаються в адресному рядку браузера). І тому вони більш захищені, а, отже, і програма яка обробляє ці дані більш захищена в плані безпеки. Також обсяг переданих даних практично ні чим не обмежений. Вибираючи спосіб передачі даних потрібно враховувати наведені особливості і зупинятися на найбільш прийнятному методі.