Відмінності між версіями «Передача параметрів в PHP»
м (перейменував «Передача параметрів в JavaScript» на «Передача параметрів в PHP»: помилка) |
|||
(не показані 11 проміжних версій 2 учасників) | |||
Рядок 1: | Рядок 1: | ||
− | + | Сучасні веб-ресурси не просто надають інформацію відвідувачу, але і взаємодіють з ним. Для взаємодії з користувачем потрібно отримувати деяку інформацію від нього. Для отримання даних є декілька методів, дуже поширені методи 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"]."<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 дані не будуть видимі користувачеві (не відображаються в адресному рядку браузера). І тому вони більш захищені, а, отже, і програма яка обробляє ці дані більш захищена в плані безпеки. Також обсяг переданих даних практично ні чим не обмежений. Вибираючи спосіб передачі даних потрібно враховувати наведені особливості і зупинятися на найбільш прийнятному методі.