У меня есть две страницы: login.php и return.php . Оба используют LightOpenID .
Страница login.php создает ссылку на провайдера OpenID и сообщает провайдеру вернуть результат в return.php
Ниже приведен обычный порядок использования этих двух страниц.
- Перейдите на login.php и нажмите на ссылку.
- Войдите, используя учетную запись Google.
- Система перенаправляет на return.php и показывает, что пользователь ... вошел в систему.
Однако позже я могу заставить return.php сказать то же самое, даже если я не сделаю Шаг 2, вставив URL-адрес return.php с его строкой запроса (копия с шага 3).
Как я могу узнать, что пользователь действительно вошел в систему, используя OpenID, или просто вставил URL из предыдущего входа в систему?
Вот код:
login.php
<?php
require_once 'openid.php';
$openid = new LightOpenID("mydomain.com");
$openid->identity = 'https://www.google.com/accounts/o8/id';
$openid->returnUrl = 'http://mydomain.com/return.php'
?>
<a href="<?= $openid->authUrl() ?>">Login</a>
return.php
<?php
require_once 'openid.php';
$openid = new LightOpenID("mydomain.com");
if($openid->mode) {
echo 'User ' . ($openid->validate() ? $openid->identity . ' has ' : 'has not ') . 'logged in.';
} elseif($openid->mode == 'cancel') {
echo 'User has canceled authentication!';
} else {
echo 'Please go to login.php';
}
?>