$_GET
Ассоциативный массив переменных, переданных скрипту через параметры URL (известные также как строка запроса). Обратите внимание, что массив не только заполняется для GET-запросов, а скорее для всех запросов со строкой запроса.
Примеры
Пример #1 Пример использования $_GET
echo ‘Привет, ‘ . htmlspecialchars ( $_GET [ «name» ]) . ‘!’ ;
?>?php
Подразумевается, что пользователь ввёл в браузере адрес http://example.com/?name=Иван
Результатом выполнения данного примера будет что-то подобное:
Привет, Иван!
Примечания
Замечание:
Это ‘суперглобальная’ или автоматическая глобальная переменная. Это просто означает, что она доступна во всех контекстах скрипта. Нет необходимости выполнять global $variable; для доступа к ней внутри метода или функции.
Замечание:
Параметры GET обрабатываются urldecode() .
Смотрите также
- Переменные извне PHP
- Фильтрация данных
GET-запросы в PHP
Итак, пришло время нам начать взаимодействовать с пользователем.
Как мы говорили ранее, PHP работает на сервере. Отсюда следует вопрос, а как же нам из браузера начать с ним взаимодействовать? Например, заполнить форму логина на сайте и отправить данные на сервер, чтобы наш код с ним что-нибудь сделал.
Именно об этом мы и поговорим в этом уроке.
Итак, давайте удалим все наши файлы в проекте и создадим новый пустой файл с именем index.php. Запишем в него следующий код:
- Тест на знание основ HTML
- Тест на знание основ PHP
- Тест на знание ООП в PHP
Давайте выполним этот скрипт, открыв в браузере адрес:
http://myproject.loc/index.php
Как мы помним из этого урока, мы отправляем запрос веб-серверу, он понимает, что мы запрашиваем PHP-скрипт, выполняет его с помощью интерпретатора и возвращает нам ответ в виде результата выполнения этого скрипта.
Возникает вопрос: «А как можно передать от пользователя внутрь скрипта какие-либо данные?». Ответов на него у нас сразу несколько, и все мы их рассмотрим в этом уроке.
- PHP программист От 150000₽
- PHP/Golang developer До 2500$
- Стажер \ Джун PHP До 20000₽
- Senior / Middle PHP Developer | Laravel 180000₽ — 250000₽
- Разработчик PHP (middle+) 110000₽ — 130000₽
Метод GET
Когда мы вбиваем адрес скрипта и нажимаем Enter, выполняется GET-запрос по протоколу HTTP. В этом типе запроса к основному адресу мы можем прикрепить дополнительные параметры. Для того чтобы передать их, в конце основного адреса ставится знак вопроса, и мы можем перечислять эти параметры — вот так:
параметр1=значение1.
При этом если нам нужно указать несколько параметров, то мы разделяем их с помощью знака амперсанда:
арг1=знач1&арг2=знач2.
Если сейчас перейти по этой ссылке в браузере, то на сервер передадутся 2 параметра:
- arg1 со значением 123;
- arg2 со значением scrrr.
Мы можем очень просто получить к ним доступ из PHP с помощью магической переменной $_GET. Эта переменная является суперглобальной, то есть доступна нам в PHP всегда и в любом месте. Она представляет собой ассоциативный массив, в котором хранятся все переданные в запросе GET-параметры.
Давайте изменим код нашего index.php, чтобы узнать, что именно хранится в этой переменной.
Мы увидим следующее:
array (size=2) 'arg1' => string '123' (length=3) 'arg2' => string 'scrrr' (length=5)
Как мы можем видеть, это действительно наши переданные аргументы, представленные в виде ассоциативного массива.
Учимся обрабатывать параметры
array (size=2) 'login' => string 'admin' (length=5) 'password' => string '12345' (length=5)
Разумеется, мы можем обращаться к этим элементам как к элементам обычного массива. Например, так:
Давайте создадим простую страничку, на которой мы будем выводить переданные с помощью GET-запроса логин и пароль.
Знакомство с GET-запросами Переданный логин:
Переданный пароль:

Обновим нашу страничку в браузере и увидим результат.
Отлично, мы успешно обработали данные, которые нам пришли от пользователя.
Учимся работать с формами
Давайте теперь вспомним уроки про формы из курса по HTML и сделаем простейшую форму для отправки GET-запроса на страничку.
Давайте запишем в наш index.php следующий код:
Форма входа Логин
Пароль
И давайте теперь откроем его в браузере: http://myproject.loc/index.php
Как мы видим по исходному коду, форма отправит аргументы login и password с введенными значениями на адрес /login.php.

Давайте введем в поля значения admin и Pa$$w0rd соответственно и нажмем на кнопку «Войти».

Где сервер нам скажет о том, что такой странички не найдено.
Отлично! Так давайте же её создадим! Создаём рядом с нашим index.php файл с именем login.php. И пишем в него следующий код:
else < $isAuthorized = false; >?> Результат авторизации
Вернёмся на нашу форму и повторно отправим пароль. Теперь мы увидим информацию о том, что мы успешно авторизовались. Это простейший прототип формы авторизации. Разумеется, он сильно упрощён, не всё сразу. А пока – делаем домашнее задание.
Как передать и принять GET запрос?
Хотя вопрос был про GET, чисто ради полноты картины добавлю, что аргументы POST можно получить из массива $_POST, а массив $_REQUEST наиболее универсальный, так как объединяет содержимое и $_GET, и $_POST, и даже $_COOKIE.
1 мар 2018 в 12:46
- php
- парсер
- get
-
Важное на Мете
Похожие
Подписаться на ленту
Лента вопроса
Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.
Дизайн сайта / логотип © 2023 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2023.11.15.1019
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
Как передать get-запрос другому моему сайту?
Люди приходят на сайт №1 по ссылке: site1.com/?g=X , где X — это любое число.
Мне нужно передать этот get-параметр (g=X) сайту №2 ( site2.com ) в момент загрузки первого сайта.
Я имею доступ к обоим сайтам, и могу внедрить в них любые скрипты.
Как я понимаю, для решения этой проблемы, сайт №1 должен сделать одну из этих вещей:
а) послать запрос на сайт №2.
б) скрыто перейти на сайт №2.
в) открыть/закрыть сайт в новом маленьком окне (не комильфо, и как я понимаю, всплывающие окна браузер может заблокировать.)
г) использовать какое-то API.
Какой вариант наиболее оптимален и как его реализовать? Я нуб, поэтому буду благодарен любому коду 🙂
- Вопрос задан более трёх лет назад
- 2455 просмотров
2 комментария
Простой 2 комментария

Ernest Faizullin @erniesto77
в вопросе нет проблемы. В чем проблема передать запрос другому сайту?
Forman @Forman Автор вопроса
Ernest Faizullin, в том, что не получается достигнуть поставленной цели.
Решения вопроса 2
Stalker_RED @Stalker_RED
var xhr = new XMLHttpRequest(); xhr.open("get", "https://site2.example.com/?g=x", true); xhr.send();
Более новая штука: fetch
fetch(‘https://site2.example.com/?g=x’) (в старых браузерах не прокатит)
Совсем непробиваемый способ:
это тоже GET запрос!
Можно придумать еще способы, но не совсем понятно зачем.
Ответ написан более трёх лет назад
Нравится 5 12 комментариев
Forman @Forman Автор вопроса
Я в этом полный ноль, поэтому у меня ни один из способов не работает :))
Вот что я добавил на сайт №1 ( https://site1.com/ ):
Ошибки в консоли при загрузке сайта №1:
В первом случае (через ajax): Failed to load https://site2.com/?g=1: Response to preflight request doesn’t pass access control check: No ‘Access-Control-Allow-Origin’ header is present on the requested resource. Origin ‘https://site1.com’ is therefore not allowed access.
Во втором случае (через xhr): Failed to load https://site2.com/?g=1: No ‘Access-Control-Allow-Origin’ header is present on the requested resource. Origin ‘https://site1.com’ is therefore not allowed access.
В третьем случае (через fetch): Uncaught (in promise) TypeError: Failed to fetch
Что я делаю не так? :))
Forman @Forman Автор вопроса
После внедрения данного кода на https://site2.com:
Способ №2 перестал давать ошибку в консоли.
Проверял через код:
var xhr = new XMLHttpRequest(); xhr.open('GET', 'https://site2.com/?ref=1', true); xhr.onload = function() < alert(xhr.responseText); >; xhr.send();
В алерте выдавало сообщение от расширения типа AdBlock, поэтому отключил его. Но, к сожалению, желаемого результата, ради которого это все затевалось, так и не получил.
Дело в том, что при входе пользователя по адресу: https://site2.com?g=1 — сайт записывает определенные данные, включая кукисы пользователю. Но после внедрения кода на сайт 1, посещения пользователем сайта 1, и даже входа им на сайт 2 (без get-параметров), сайт 2 все равно не содержит кукисы пользователя и информацию о его посещении в статистике. Как этого добиться, если обычный переход по адресу https://site2.com?g=1 все записывает?
Stalker_RED @Stalker_RED
Forman, что-то вы делаете не так.
Я только-что попробовал отправить запрос
https://jsfiddle.net/bdzck5z9/
получаю No ‘Access-Control-Allow-Origin’ header is present
Forman @Forman Автор вопроса
Stalker_RED, это я просто убрал из сайта №2 этот код (на всякий случай в целях безопасности):
Внедрил обратно. Попробуйте еще раз, пожалуйста.
Stalker_RED @Stalker_RED

https://oiz.by/wp-test/?ref=1 и https://oiz.by/wp-test/ ставят по две куки:
Stalker_RED @Stalker_RED
Внедрил обратно. Попробуйте еще раз, пожалуйста.

Куки ставятся:
Stalker_RED @Stalker_RED
Вывод: js не виноват, и работает правильно.
Forman @Forman Автор вопроса

Stalker_RED, может быть Вы ошиблись?
Второй сайт с get-параметром выдает 4 куки. Я и удалял, и 6 браузеров попробовал.
Не может же быть такого, что у меня 4-е, а у Вас 2 🙂
Stalker_RED @Stalker_RED

Forman, чаще всего две, изредка появляется третья
Forman @Forman Автор вопроса
Stalker_RED, может быть у Вас что-то их блокирует?! Типа расширение, которое анонимизирует клиента или обрезает реферальные ссылки (ref).
Я с 3 устройств проверил, с 6 браузеров, и даже через прокси. Везде назначаются нужные куки.
У Вас же, насколько я вижу — только сессионные куки отображаются.
Если проверять через вкладку Network, то зайдя на сайт №2 с ?ref=1, выбрав вкладку ?ref=1, я получаю след. в заголовках: Cookie:PHPSESSID=uogvpn3re5i8ivkoddpnaninb2; affwp_ref=1; affwp_ref_visit_id=-2; woocommerce_cart_hash=null
А через JSFiddle и сайт №1 только:
Set-Cookie:PHPSESSID=hho2504it6v2nfsacf9g771nl4; path=/
В настройках скрипта я выбрал другой метод отслеживания. И передача кукисов заработала!
Огромное спасибо за помощь! Буду благодарен, если попробуете зайти на сайт и сказать, появились ли у Вас куки. Может и эта проблема решилась изменением метода отслеживания 🙂
Stalker_RED @Stalker_RED

Forman, сейчас ставятся.
И в jsfiddle:
В настройках скрипта я выбрал другой метод отслеживания. И передача кукисов заработала!
Что такое «в настройках скрипта»?
Forman @Forman Автор вопроса
Stalker_RED, сторонний скрипт, который и ставил эти кукисы, заносил в статистику переход и все остальное.
Forman @Forman Автор вопроса
Есть еще один рабочий способ (на php):
file_get_contents('https://site2.com/?g='.$_GET['g']);
Но в отличие от xhr-запроса, он относится к «прямому трафику», что дает некорректную статистику в скриптах.
XHR-запросы, напротив, в статистике будут отражать ссылку, с которой был запрос (что намного удобнее). Хотя, может быть, это проблема самих скриптов.
Ответ написан более трёх лет назад
Нравится 1 1 комментарий
Stalker_RED @Stalker_RED
Можно настроить контекст и передавать заголовок referer указав в нем любую ссылку. Она и будет показываться вместо «ссылки, с которой был запрос»
Ответы на вопрос 2
Ответ написан более трёх лет назад
Комментировать
Нравится Комментировать
самая ленивая
гляньте, может тут найдете решение
https://habrahabr.ru/post/120336/
Ответ написан более трёх лет назад
Комментировать
Нравится Комментировать
Ваш ответ на вопрос
Войдите, чтобы написать ответ

- JavaScript
- +2 ещё
Не работает скрипт npm run, что делать?
- 1 подписчик
- только что
- 3 просмотра
