2012-03-22 6 views
0

私は2ページあります:login.phpreturn.phpです。どちらも使用LightOpenIDです。ユーザーが実際にOpenIDを使用してログインしているか、以前のログインのURLを貼り付けるだけであることを知るにはどうすればよいですか?

ページlogin.phpはOpenIDプロバイダへのリンクを作成し、これら2つのページを使用しての通常の流れは次のとおりreturn.php

に結果を返すために、プロバイダに指示します。

  1. login.phpにアクセスし、リンクをクリックします。
  2. Googleアカウントを使用してログインします。
  3. システムは、return.phpにリダイレクトし、ユーザー...がログインしていることを示しています。

しかし、後に、私はreturn.phpを作ることができ、同じことをしても、私は「ドン言いますステップ2をURL return.phpにクエリ文字列(ステップ3のコピー)を貼り付けて貼り付けます。

ユーザーが実際にOpenIDを使用してログインしたことを知ることができますか?

login.php LightOpenIdの文書は助けない

<?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'; 
} 
?> 

答えて

2

$openid->validate()返信true 1回の認証につき1回だけです。ユーザーが全く同じURL(つまり同じナンスなど)を使用して再度ログインしようとすると、$openid->validate()はfalseを返します。プロバイダが仕様に従って動作する場合、少なくともその場合です。そうでなければ、ほとんど何もできません。

0

<?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:

はここのコードです。しかし、この質問は役に立ちます:link

関連する問題