Какая разница между POST и GET
Очень давно хотел написать статью, в которой рассказать о разнице между методом POST и методом GET, но всё как-то появлялись другие темы, и переключался на них. И вот, наконец-то, пришло время осветить эту тему, так как зачастую люди просто не знают, какая разница между POST и GET.
Чтобы более наглядно отобразить разницу между POST и GET, привожу таблицу, в которой видно, по каким характеристикам они различаются.
Характеристика | POST | GET |
Способ передачи | Стандартный поток | Передача вместе с адресом |
Максимальный объём | 8 КБ | 255 символов |
Кэширование | Нет | Да |
На основании этой характеристики можно делать вывод, когда нужно использовать POST, а когда GET. Например, если пользователь хочет сохранить сгенерированную страницу в закладки. То генерация должна происходить путём GET-запроса, иначе добавить страницу в закладки не получится. Другой пример: при передаче логина и пароля нельзя ставить метод GET, так как он основан на передаче данных через адресную строку. Иначе после нажатия кнопки "Submit", в адресной строке появится что-то наподобии этого: "http://mysite.ru/login.php?log=User&pass=123456", - и пароль может увидеть, кто угодно, чего, разумеется, допускать нельзя. Поэтому здесь надо использовать метод POST.
Также не забывайте, что размер данных, которые можно передать методом POST, на порядок больше, чем при передаче методом GET. В общем, анализируйте эту таблицу и делайте вывод: каким методом передачи данных нужно пользоваться в конкретном случае. От себя добавлю, что в 80% случаев надо использовать POST, но и не забывайте, что это далеко не 100%.
-
- Михаил Русаков
Комментарии (15):
Добрый день! Мне нужно что бы при редиректе например: header("Location: test.php"); передавался на эту страницу $_POST значение. Страница, с которой должно передаваться это значение не имеет ни каких форм. Т.е. она просто обрабатывает данные и формирует определенный запрос. На данный момент у меня сделана передача с помощью cookie. Но я не уверен, что это безопасно. Или я ошибаюсь? Данные, которые передаются, не должны быть видимы пользователям.
Ответить
С помощью cookie обычно и передают данные. А POST отправить значительно сложнее и хуже.
Ответить
Спасибо.
Ответить
Доброго времени суток :), Михаил! Пробую писать плагин на php и естественно обнаружил у себя нехватку знаний. Отсюда вопрос: если некий сайт (платежная система) после моих действий на моей стороне присылает мне на сайт на конкретную страницу данные методом POST должен ли я увидеть их если напишу в скрипте print_r($_POST); ? Просто в моем случае например print_r($_SERVER); видно какие данные в массиве $_SERVER, а $_POST пустой, то есть либо данные не приходят либо у меня профанский взгляд на то как на самом деле обстоят дела.
Ответить
Здравствуйте,Александр Обычно платёжные системы передают данные в обратном порядке в зашифрованном виде и по защищённым протоколам. Так что всё зависит от платёжной системы. Вы пишете модуль оплаты для какой-либо конкретной системы? Уточните запросы иначе я не смогу Вам помочь
Ответить
Здравствуйте Александр, спасибо за отклик. Пишу плагин для cms Wordpress, работаю с платежной системой interkassa.com . При удачной покупке перебрасывает на страницу успешной оплаты http://мой_сайт/success . на эту страницу согласно документации приходят данные, которые мне видны. То есть я в настройках выбирал передачу GET методом и приходит длинный url эта ссылка и в ней параметры http://мой_сайт/success/?&ik_payment_id=1&ik_paysystem_alias=yandexdengir ,все как положено. Пробовал выбирать метод передачи POST тогда в скрипте прописывал например if (isset($_POST['ik_trans_id'])) echo $_POST['ik_trans_id']. И это работало. Потом стал работать со STATUS url потомучто тогда приходит ik_sign_hash который формируется интеркассой с использованием секретного ключа (который известен мне и интеркассе) и в этот раз if (isset($_POST['ik_sign_hash']) не срабатывает потомучто его нет. У меня на сайте стоит плагин (не все делает как хотелось бы) написанный на ООП (до уровня того кто это писал мне еще далеко, может поэтому мне не очевидно что там используется). Этот плагин все отрабатывает и рассчитывает хеш на своей стороне, потомучто я умышленно менял секретный ключ (в настройках плагина) и на почту приходило письмо с уведомлением о неверно переданных данных (хеши не совпали)и просьбой обратиться к администратору сайта. Вот как-то так.
Ответить
Ну,я не видел Ваш плагин,поэтому конкретного ничего не скажу. Что касается простой реализации...Я не изучал API интеркассы. Простое решение можете посмотреть тут: http://goo.gl/rFnpNc По сути во всех системах одинаково. Я обычно с робокассой работаю или онпей,так что извините. А вообще структура примерно такая.Вам нужно в соответствии с документацией API написать реализацию http://www.interkassa.com/faq.php смотрите тут раздел Interkassa глазами программиста и администратора+ Там в последнем из вопросов есть тех.документация для скачки ну и мелочи по API вообще
Ответить
Спасибо Александр. Видел я все это читал, пробую уже не первый день и гуглю вот и думаю может я чего не понимаю :). http://goo.gl/rFnpNc - а это плагин Андрея Морковина, написанный не до конца (наверное чтобы не раскрывать всех секретов скрипт теперь платный). По нему создано несколько видео уроков о том как писать плагины на WP. Вот этот плагин http://www.icprojects.net/paid-downloads-plugin.html есть в платной и бесплатной версии. В бесплатной версии доступна только оплата PAYPAL. но он весь и если поменять пару значений становится доступен режим Интеркассы в бета версии.
Ответить
Да,я в курсе этого.Просто валялся плагин.До конца или нет,но он работал.Может,где-то версия и за 40у.е. валяется. В любом случае ничего конкретного не посоветую. Читайте документацию по API Интеркасса А алгоритмы везде одинаковы.Пишете обработчик который посылает данные в шифрованном виде и который их в таком же виде принимает и расшифровывает. Можете подсмотреть решение у Левчука в его wppage ;) Если будет время,то разберу эту тему более подробно
Ответить
Спасибо!
Ответить
там же даже в этом .doc файле примеры реализации расписаны и прокомментирован каждый параметр. Остальное - дело техники и знания PHP
Ответить
Александр, как вам онпей? Хорошая система?
Ответить
использую в одном проектам и ставлю заказчикам многим.она проще+под неё модули готовые есть. Так что да,система неплоха но вообще в плане безопасности данных пока толковая - робокасса)
Ответить
Добрый день, Alex_ Пытаюсь разобраться с Интеркассой. Если не жалко - напишите, плиз, свой e-mail. Спасибо
Ответить
Что сделать если POST запрос превышает 8kb?
Ответить
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.