login.phpとreturn.phpの 2 つのページがあります。どちらもLightOpenIDを使用します。
ページlogin.phpは、OpenID プロバイダーへのリンクを作成し、プロバイダーに結果をreturn.phpに返すように指示します。
以下は、これら 2 つのページを使用する通常の流れです。
- login.phpに移動し、リンクをクリックします。
- Google アカウントを使用してログインします。
- システムはreturn.phpにリダイレクトし、User ... がログインしたことを示します。
ただし、後で、return.phpの URL をクエリ文字列 (手順 3 からコピー) とともに貼り付けることで、手順 2 を実行しなくても、return.phpに同じことを言わせることができます。
ユーザーが実際に 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';
}
?>