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

Матеріал з Вікі ЦДУ
Перейти до: навігація, пошук
 
(не показано 4 проміжні версії ще одного учасника)
Рядок 6: Рядок 6:
 
Код
 
Код
 
  http://домен.ru/script.php?num=10
 
  http://домен.ru/script.php?num=10
Если у вас локальный сервер, то обычно домен будет localhost, и тогда предыдущая запись будет выглядеть
+
Якщо у вас локальний сервер, то зазвичай домен буде localhost, і тоді попередній запис буде виглядати
 
Код
 
Код
 
  http://localhost/script.php?num=10
 
  http://localhost/script.php?num=10
В этом случае мы передаем параметр num равный 10. Для добавления следующих параметров сценарию нужно использовать разделитель - амперсант (&), например
+
У цьому випадку ми передаємо параметр num рівний 10. Щоб додати наступних параметрів сценарієм потрібно використовувати розділювач - амперсант (&), наприклад
 
Код
 
Код
 
  http://домен.ru/script.php?num=10&type=new&v=text
 
  http://домен.ru/script.php?num=10&type=new&v=text
В данном случае мы передали скрипту три параметра: num со значением 10, type со значением "new" и v со значением "text".
+
У даному випадку ми передали скрипту три параметри: num зі значенням 10, type зі значенням "new" і v зі значенням "text".  
Для получения этих параметров в скрипте нужно использовать встроенный массив $_GET. Ключами этого массива будут названия параметров. В нашем случае нужно использовать $_GET["num"], $_GET["type"],$_GET["v"]. Эти элементы массива и будут содержать значения переданных параметров. Для демонстрации этого примера создайте файл script.php следующего содержания
+
Для отримання цих параметрів у скрипті потрібно використовувати вбудований масив $ _GET. Ключами цього масиву будуть назви параметрів. У нашому випадку потрібно використовувати $ _GET ["num"], $ _GET ["type "],$_ GET [" v "]. Ці елементи масиву і будуть містити значення переданих параметрів. Для демонстрації цього прикладу створіть файл script.php такого змісту
 
Код
 
Код
 
  <html>
 
  <html>
Рядок 27: Рядок 27:
 
  </body>
 
  </body>
 
  </html>
 
  </html>
И теперь вызовите этот файл в браузере
+
І тепер викличте цей файл у браузері
 
Код
 
Код
 
  http://путь/script.php?num=10&type=new&v=text
 
  http://путь/script.php?num=10&type=new&v=text
и вы увидите переданные параметры в окне браузера. Но если вы вызовите этот файл без дополнительных параметров http://путь/script.php , то увидите ошибки, которые выдаст интерпретатор PHP, о том, что таких элементов массива $_GET нет. Проверке данных получаемых от пользователя можно посветить не одну статью, поэтому в этой статье я не буду затрагивать этот момент.
+
і ви побачите передані параметри у вікні браузера. Але якщо ви викличте цей файл без додаткових параметрів http://путь/script.php, то побачите помилки, які видасть інтерпретатор PHP, про те, що таких елементів масиву $ _GET немає. Як ви, напевно, розумієте примушувати користувача набирати дані в адресному рядку браузера не дуже добре і зовсім незручно. Тому для прийому даних від користувача потрібно використовувати html-форми. Напишемо простеньку html-форму.
Как вы, наверное, понимаете заставлять пользователя набирать данные в адресной строке браузера не очень хорошо и совсем неудобно. Поэтому для приема данных от пользователя нужно использовать html-формы. Напишем простенькую html-форму.
+
 
Код
 
Код
 
  <form action="script.php" method="get" >
 
  <form action="script.php" method="get" >
  Введите число <input type="text" name="num" value="" /><br/>
+
  Введіть число <input type="text" name="num" value="" /><br/>
  У Вас есть компьютер? <select name="type">
+
  У вас є компютер? <select name="type">
  <option value="yes">Да</option>
+
  <option value="yes">Так</option>
  <option value="no">Нет</option>
+
  <option value="no">Ні</option>
 
  </select><br/>
 
  </select><br/>
  Ваш комментарий:<br/>
+
  Ваші коментарі:<br/>
 
  <textarea name="v" ></textarea><br/>
 
  <textarea name="v" ></textarea><br/>
 
  <input type="submit" name="bsubmit" value="Отправить" />
 
  <input type="submit" name="bsubmit" value="Отправить" />
 
  </form>
 
  </form>
Немного прокомментирую созданную форму. Формы создаются тегом form. Поля формы создаются тегами input, select, textarea (подробнее можно почитать формы в HTML). В теге form в атрибуте action указывается URL-адрес скрипта, который получит данные формы. В нашем случае мы указали уже существующий у нас файл script.php. Атрибут method задает метод отправки данных. Мы указали метод GET. Теперь мы знаем, какому файлу будут переданы данные формы, и каким способом, осталось разобраться, где их там искать?!
+
Трохи прокоментую створену форму. Форми створюються тегом 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.  
Данные этой формы будут переданы веб-ресурсу браузером путем добавления их к URL-адресу: сначала будет знак вопроса (?), затем будут представлены параметры разделенные амперсантом (&). Название параметра будет браться из атрибута name, которое должно быть прописано у любого поля формы. Значение параметра будет зависеть от типа поля. Если поле является текстовым, то значением будет введенный пользователем текст. Если же поле будет представлять собой список, группу переключателей или флажков, то значением параметра будет значение атрибута value выбранного элемента. Поясню на примере нашей формы. Если пользователь введет в поле input число 10, то названием параметра будет num (значение атрибута name тега input), а значением будет 10 (введенное пользователем число). Соответственно браузер сформирует пару "num=10". Если пользователь из списка выберет вариант "Да", то названием параметра будет type (значение атрибута name тега select), а значением будет yes (значение атрибута value тега option). Соответственно браузер сформирует пару "type=yes".
+
Теперь эту форму разместим на странице forma.php.
+
 
Код
 
Код
 
  <html>
 
  <html>
 
  <head>
 
  <head>
  <title>Форма для передачи данных методом GET и PHP</title>
+
  <title>Форма для передачі даних методом GET і PHP</title>
 
  </head>
 
  </head>
 
  <body>
 
  <body>
 
  <form action="script.php" method="get" >
 
  <form action="script.php" method="get" >
  Введите число <input type="text" name="num" value="" /><br/>
+
  Введіть число <input type="text" name="num" value="" /><br/>
  У Вас есть компьютер? <select name="type">
+
  У вас є компютер? <select name="type">
  <option value="yes">Да</option>
+
  <option value="yes">Так</option>
  <option value="no">Нет</option>
+
  <option value="no">Ні</option>
 
  </select><br/>
 
  </select><br/>
  Ваш комментарий:<br/>
+
  Ваші коментарі:<br/>
 
  <textarea name="v" ></textarea><br/>
 
  <textarea name="v" ></textarea><br/>
 
  <input type="submit" name="bsubmit" value="Отправить" />
 
  <input type="submit" name="bsubmit" value="Отправить" />
Рядок 64: Рядок 61:
 
  </body>
 
  </body>
 
  </html>
 
  </html>
Введите в поля формы какие-либо значения и нажмите кнопку "Отправить". После нажатия кнопки браузер откроет другую страницу (script.php), и в окне браузера будут отображены данные, которые вы ввели. Я думаю понятно почему: браузер передаст данные сценарию script.php, и в скрипте эти данные будут обработаны и выведены на экран.
+
Введіть у поля форми будь-які значення та натисніть кнопку "Відправити". Після натискання кнопки браузер відкриє іншу сторінку (script.php), і у вікні браузера будуть відображені дані, які ви ввели. Я думаю зрозуміло чому: браузер передасть дані сценарієм script.php, і в скрипті ці дані будуть оброблені і виведені на екран.
  
 
== '''Метод POST''' ==
 
== '''Метод POST''' ==
  
Теперь давайте рассмотрим, как работает метод POST.
+
Тепер давайте розглянемо, як працює метод POST.  
Для отправки данных методом POST нужно использовать HTML-формы. Как мы помним, что за способ отправки данных формы отвечает атрибут method тега form. Поэтому нужно в атрибуте method тега form указать значение POST. В остальном форма может быть та же, как и для метода GET. Изменим нашу форму, которую мы уже использовали для передачи данных способом GET, для передачи методом POST.
+
Для відправлення даних методом POST потрібно використовувати HTML-форми. Як ми пам'ятаємо, що за спосіб відсилання даних форми відповідає атрибут method тега form. Тому потрібно в атрибуті method тега form вказати значення POST. В іншому форма може бути така ж, як і для методу GET. Змінимо нашу форму, яку ми вже використали для передачі даних способом GET, для передачі методом POST.  
 
Код
 
Код
 
  <form action="script_post.php" method="post" >
 
  <form action="script_post.php" method="post" >
  Введите число <input type="text" name="num" value="" /><br/>
+
  Введіть чісло <input type="text" name="num" value="" /><br/>
  У Вас есть компьютер? <select name="type">
+
  У вас є компютер? <select name="type">
  <option value="yes">Да</option>
+
  <option value="yes">Так</option>
  <option value="no">Нет</option>
+
  <option value="no">Ні</option>
 
  </select><br/>
 
  </select><br/>
  Ваш комментарий:<br/>
+
  Ваші коментарі:<br/>
 
  <textarea name="v" ></textarea><br/>
 
  <textarea name="v" ></textarea><br/>
 
  <input type="submit" name="bsubmit" value="Отправить" />
 
  <input type="submit" name="bsubmit" value="Отправить" />
 
  </form>
 
  </form>
Как видите, форма осталась та же за исключением атрибутов method и action. Теперь данные будут передаваться сценарию script_post.php. Поместим нашу форму на странице forma_post.php.
+
Як бачите, форма залишилася такаж за винятком атрибутів method і action. Тепер дані будуть передаватися сценарієм script_post.php. Помістимо нашу форму на сторінці forma_post.php.
 
Код
 
Код
 
  <html>
 
  <html>
 
  <head>
 
  <head>
  <title>Форма для передачи данных методом POST и PHP</title>
+
  <title>Форма для передачі даних методом POST і PHP</title>
 
  </head>
 
  </head>
 
  <body>
 
  <body>
 
  <form action="script_post.php" method="post" >
 
  <form action="script_post.php" method="post" >
  Введите число <input type="text" name="num" value="" /><br/>
+
  Введіть число <input type="text" name="num" value="" /><br/>
  У Вас есть компьютер? <select name="type">
+
  У вас є компютер? <select name="type">
  <option value="yes">Да</option>
+
  <option value="yes">Так</option>
  <option value="no">Нет</option>
+
  <option value="no">Ні</option>
 
  </select><br/>
 
  </select><br/>
  Ваш комментарий:<br/>
+
  Ваші коментарі:<br/>
 
  <textarea name="v" ></textarea><br/>
 
  <textarea name="v" ></textarea><br/>
 
  <input type="submit" name="bsubmit" value="Отправить" />
 
  <input type="submit" name="bsubmit" value="Отправить" />
Рядок 100: Рядок 97:
 
  </body>
 
  </body>
 
  </html>
 
  </html>
Теперь надо написать сценарий, который будет обрабатывать данные нашей формы.
+
Тепер треба написати сценарій, який буде обробляти дані нашої форми.  
Для получения в скрипте данных переданным методом POST нужно использовать встроенный массив $_POST. Ключами этого массива будут названия параметров. В нашем случае нужно использовать $_POST["num"], $_POST["type"],$_POST["v"]. Эти элементы массива и будут содержать значения переданных данных. Как видите отличие от использования способа GET, выражается лишь в использовании массива $_POST. Поэтому нам не составит труда написать файл script_post.php:
+
Для отримання в скрипті даних переданим методом POST потрібно використовувати вбудований масив $ _POST. Ключами цього масиву будуть назви параметрів. У нашому випадку потрібно використовувати $ _POST ["num"], $ _POST ["type "],$_ POST [" v "]. Ці елементи масиву і будуть містити значення переданих даних. Як бачите відміну від використання способу GET, виражається лише у використанні масиву $ _POST. Тому нам не важко буде написати файл script_post.php:
 
Код
 
Код
 
  <html>
 
  <html>
Рядок 115: Рядок 112:
 
  </body>
 
  </body>
 
  </html>
 
  </html>
Теперь откройте файл forma_post.php в браузере. Введите какие-нибудь данные в поля формы и нажмите кнопочку "Отправить". Сейчас, наверное, вы заметили отличие метода POST от GET - в адресной строке браузера не появились данные формы. Данные методом POST нельзя передать через адресную строку браузера. Это существенное отличие нужно запомнить.
+
Тепер відкрийте файл forma_post.php в браузері. Введіть які-небудь дані в поля форми і натисніть кнопочку "Відправити". Зараз, напевно, ви помітили відміну методу POST від GET - в адресному рядку браузера не з'явилися дані форми. Дані методом POST не можна передати через адресний рядок браузера. Це суттєва відмінність потрібно запам'ятати.  
В PHP в независимости, каким способом были отправлены данные - методом POST или методом GET - получить данные можно используя массив $_REQUEST.
+
У PHP в незалежності, яким способом були відправлені дані - методом POST або методом GET - отримати дані можна використовуючи масив $ _REQUEST.
  
== '''Сравнение методов GET и POST''' ==
+
== '''Порівняння методів GET і POST''' ==
  
При использовании метода GET данные передаются путем добавления к URL-адресу. Таким образом, они будут видны пользователю, что с точки зрения безопасности не всегда хорошо. Также максимальный объем передаваемых данных будет зависеть от браузера - от максимально-допустимого количества символов адресной строке браузера.
+
При використанні методу GET дані передаються шляхом додавання до URL-адреси. Таким чином, вони будуть видимі користувачеві, що з точки зору безпеки не завжди добре. Також максимальний обсяг переданих даних буде залежати від браузера - від максимально-допустимої кількості символів в адресному рядку браузера.  
При использовании метода POST данные не будут видны пользователю (не отображаются в адресной строке браузера). И поэтому они более защищены, а, следовательно, и программа обрабатывающая эти данные более защищена в плане безопасности. Также объем передаваемых данных практически ни чем не ограничен.
+
При використанні методу POST дані не будуть видимі користувачеві (не відображаються в адресному рядку браузера). І тому вони більш захищені, а, отже, і програма яка обробляє ці дані більш захищена в плані безпеки. Також обсяг переданих даних практично ні чим не обмежений.  
Выбирая способ передачи данных нужно учитывать приведенные особенности и останавливаться на наиболее приемлемом методе.
+
Вибираючи спосіб передачі даних потрібно враховувати наведені особливості і зупинятися на найбільш прийнятному методі.
  
 
[[category:Інтернет-програмування|*]]
 
[[category:Інтернет-програмування|*]]
  
 
[[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 дані не будуть видимі користувачеві (не відображаються в адресному рядку браузера). І тому вони більш захищені, а, отже, і програма яка обробляє ці дані більш захищена в плані безпеки. Також обсяг переданих даних практично ні чим не обмежений. Вибираючи спосіб передачі даних потрібно враховувати наведені особливості і зупинятися на найбільш прийнятному методі.