OpenID テストキット完全版 : ページ( 3 )

  OpenID を使用したログイン処理



login.php
<?
session_start();
// エラーメッセージを表示
ini_set( 'display_errors', "1" );

// エラーメッセージ対象のコード
require_once( 'login_control.php' );
?>



login_control.php
<?php
require_once "common.php";

// *********************************************************
// 基本オブジェクト作成
// *********************************************************
$store = new Auth_OpenID_FileStore($store_path);
log_file(print_r($store,true));
$consumer = new Auth_OpenID_Consumer($store);
log_file(print_r($consumer,true));

// *********************************************************
// 対象
// *********************************************************
if ( $_GET['id'] != "" ) {
	$openid = $_GET['id'];
	log_file(print_r($openid,true));

	$error_message = "";
	$auth_request = $consumer->begin($openid);
	if (!$auth_request) {
		$error_message = "OpenID が正しくありません";
	}

	if ( $error_message == "" )	 {
		// nickname 等が必要無い場合はここを実行する必要はない
		$sreg_request = 
			Auth_OpenID_SRegRequest::build(
				// Required
				array('nickname'),
				// Optional
				array('fullname', 'email')
			);
		if ($sreg_request) {
			$auth_request->addExtension($sreg_request);
		}
		log_file(print_r($auth_request,true));

		// Google の email 取得 ( friendly は Yahoo で、mixi でも使えました )
		$ax = new Auth_OpenID_AX_FetchRequest;

		$attribute = array();
		$attribute[] = Auth_OpenID_AX_AttrInfo::make('http://axschema.org/contact/email', 1, true,'email');
		$attribute[] = Auth_OpenID_AX_AttrInfo::make('http://axschema.org/namePerson/last', 1, true,'lastname');
		$attribute[] = Auth_OpenID_AX_AttrInfo::make('http://axschema.org/namePerson/first', 1, true,'fastname');
		$attribute[] = Auth_OpenID_AX_AttrInfo::make('http://axschema.org/namePerson/friendly', 1, true,'friendly');


		foreach($attribute as $attr){
			$ax->add($attr);
		}
		$auth_request->addExtension($ax);

	}
	
	if ( $error_message == "" )	 {
		if ($auth_request->shouldSendRedirect()) {
			$redirect_url = 
				$auth_request->redirectURL( $trust_root, $return_to );

				if (Auth_OpenID::isFailure($redirect_url)) {
					$error_message =
						"サーバーにリダイレクトできません:"
						. $redirect_url->message;
				}
				else {
					log_file(print_r($redirect_url,true));
					header("Location: ".$redirect_url);
				}
		}
		else {
			$form_id = 'openid_message';
			$form_html = 
				$auth_request->htmlMarkup(
					$trust_root, $return_to,
					false,
					array('id' => $form_id )
				);
		
			if (Auth_OpenID::isFailure($form_html)) {
				$error_message =
					"サーバーにリダイレクトできません(HTML):"
					. $form_html->message;
			}
			else {
				log_file(print_r($form_html,true));
				print $form_html;
			}
		
		}
	}
}

// リダイレクトされなかった場合の表示
require_once "login_view_message.php";

?>



login_view_message.pjp
<HTML>
<HEAD>
<META http-equiv="Content-type" content="text/html; charset=shift_jis" />
<TITLE>ログイン</TITLE>
<STYLE type="text/css">
* {
	font-size: 12px;
}
</STYLE>
</HEAD>
<BODY>

<?= $error_message ?>

</BODY>
</HTML>











  infoboard   管理者用   
このエントリーをはてなブックマークに追加





フリーフォントWEBサービス
SQLの窓WEBサービス

SQLの窓フリーソフト

素材

一般WEBツールリンク

SQLの窓

フリーソフト

JSライブラリ