У меня есть ссылка для автоматического входа в один домен – этот домен используется для авторизации:
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», поэтому они все одинаковые. Несомненно, вы не позволяете людям понять ваш вопрос. Я попытаюсь указать, как я это понимаю.
У вас есть пользователь, зарегистрированный в одном домене в Интернете, и вы хотите перенаправить его во второй домен, где они должны оставаться в системе.
Есть много способов сделать это, но все они зависят от определенных условий.
Если вы используете стандартный метод входа в http, вы можете перенаправить на второй домен:
https: // имя пользователя: password@example.com
Поскольку вы указываете, что используете SSL-сертификат на обоих сайтах, которые были бы безопасными. Это будет работать, даже если вы не используете базу данных.
Если оба домена используют одну и ту же базу данных, вы можете передать зашифрованную ссылку на зарегистрированный сеанс пользователя. Так я обычно это делаю. Я сохраняю сеансы в своей базе данных, и каждый сеанс имеет идентификатор. Я шифрую это, любой хороший метод будет делать, и отправить его ко второму домену, где я его расшифровываю следующим образом:
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';