https запрос в другой домен с перенаправлением с использованием php

У меня есть ссылка для автоматического входа в один домен – этот домен используется для авторизации:

https://example.com/api/login/{key}/{username}

После этой ссылки пользователь перенаправляется на панель управления:

https://example.com

Если что-то не так – пользователь перенаправлен на

https://example.com/login page.

В другом домене example2.com пользователей example2.com есть панель выставления счетов и ссылка https://example.com/api/login/{key}/{username} .

Поэтому мне нужно сделать проверку с example2.com на example.com следующим образом:

 $url = https://example.com/api/login/{key}/{username}; if function-to-check-autologin($url) == "true" { //do something } 

Мой результат поиска – завиток, но я не могу настроить запрос самостоятельно.

Как я могу это сделать? завиток или по-другому?

Вы не объяснили, что такое «автоматический вход», или как он работает. Все ваши домены являются «example.com», поэтому они все одинаковые. Несомненно, вы не позволяете людям понять ваш вопрос. Я попытаюсь указать, как я это понимаю.

У вас есть пользователь, зарегистрированный в одном домене в Интернете, и вы хотите перенаправить его во второй домен, где они должны оставаться в системе.

Есть много способов сделать это, но все они зависят от определенных условий.

  1. Если вы используете стандартный метод входа в http, вы можете перенаправить на второй домен:

    https: // имя пользователя: password@example.com

Поскольку вы указываете, что используете SSL-сертификат на обоих сайтах, которые были бы безопасными. Это будет работать, даже если вы не используете базу данных.

  1. Если оба домена используют одну и ту же базу данных, вы можете передать зашифрованную ссылку на зарегистрированный сеанс пользователя. Так я обычно это делаю. Я сохраняю сеансы в своей базе данных, и каждый сеанс имеет идентификатор. Я шифрую это, любой хороший метод будет делать, и отправить его ко второму домену, где я его расшифровываю следующим образом:

    https://example.com?key=DgGyC28Sw3eQFvY9hz2dBkfmCa5zMgV6nN4Jj8VeD76chf7

Конечно, сам сеанс должен сообщить вам, вошел ли пользователь в систему. Убедитесь, что ваш метод шифрования безопасен.

В обоих случаях, если URL-адрес попадает в чужие руки, логин может быть подделан. Вот почему использование SSL важно, но некоторые риски остаются.

Хотя ваш вопрос неясен, я бы дал вам некоторые подсказки.

Прежде всего, вы должны установить CURLOPT_SSL_VERIFYPEER параметра CURLOPT_SSL_VERIFYPEER значение false если вы не собираетесь иметь дело с сертификатом сверстника.

Также вы должны указать CURL обрабатывать перенаправления. Предположим, вы установили параметр CURLOPT_FOLLOWLOCATION а также CURLOPT_MAXREDIRS и CURLOPT_AUTOREFERER .

Чтобы отправить данные POST с запросом, вы должны установить CURLOPT_POST параметра CURLOPT_POST значение true и CURLOPT_POSTFIELDS для массива данных POST или строки с кодировкой url.

После запроса curl_getinfo вы можете узнать всю информацию об этом с curl_getinfo функции curl_getinfo . Вызов с CURLINFO_REDIRECT_COUNT качестве второго параметра даст количество переадресаций, а CURLINFO_EFFECTIVE_URL – последний эффективный URL.

Таким образом, код может выглядеть так:

 $ch = curl_init(); curl_setopt_array($ch, array( CURLOPT_URL => $url, CURLOPT_NOBODY => false, CURLOPT_RETURNTRANSFER => true, CURLOPT_SSL_VERIFYPEER => false, CURLOPT_FOLLOWLOCATION => true, CURLOPT_MAXREDIRS => 1, CURLOPT_AUTOREFERER => true, CURLOPT_POST => true, CURLOPT_POSTFIELDS => $data_array, )); $response = curl_exec($ch); if (curl_getinfo($ch, CURLINFO_REDIRECT_COUNT) == 1 && curl_getinfo($ch, CURLINFO_EFFECTIVE_URL) == $sample_redirect_url) echo 'OK';