Flex3 : PHPセッションによるログイン処理

  初期画面



ブラウザでダウンロード

Flex3_login

ログインされる前は、通常処理のボタンを使用できないようにしておきます。
初期処理で check_login.php を呼び出して、ログインされている場合のみ、ボタンを押せるようにします

check_login.php の呼び出し

  
// *********************************************************
// アプリケーションの初期化
// *********************************************************
public function initData():void {

	firebug("処理開始");
	fld1.setFocus();

	// JavaScript に公開するメソッドの登録
	ExternalInterface.addCallback("sendSyain", sendSyain);
	// いかなるドメインからも OK
	Security.allowDomain("*");

	srv.url = "check_login.php";

	// レスポンス結果のデータフォーマット
	srv.resultFormat = "text";
	srv.method = "GET";

	// リクエストを区別する処理
	var at:AsyncToken = srv.send();
	// 適当なプロパティを作成して値をセット
	at.reqId = "init";

	firebug("データを送信しました");


}
  

check_login.php からの受信

  
// *****************************************************
// HTTPServiceが成功
// *****************************************************
private function resultHandler(e:ResultEvent):void {

	if ( e.token.reqId == 'main' ) {
		Alert.show(e.result.toString(),"入力した値を表示しています");
	}
	if ( e.token.reqId == 'init' ) {
		if ( e.result.toString() == "OK" ) {
			btn.enabled = true
			firebug("ログインされています");
		}
		else {
			firebug("ログインされていません");
		}
	}

	firebug("データを受信しました");
	firebug("リクエスト : " + e.token.reqId );

}
  


check_login.php

セッション変数の $_SESSION['user'] に、"lightbox" がセットされておればログイン
している事になります。その場合は、swf に "OK" を返すので、swf 側ではボタンを押せるように
処理する事になります

  
<?
session_start();
header( "Content-Type: text/html; Charset=utf-8" );
header( "pragma: no-cache" );
header( "Expires: Wed, 31 May 2000 14:59:58 GMT" );
header( "Cache-control: no-cache" );

if ( $_SESSION['user'] == 'lightbox' ) {
	print 'OK';
}
else {
	print 'NO';
}

?>
  




  ログインボタンで呼び出される PHP の画面



Flex3_login_2

ログインボタンを押すと、セッション変数をセットして swf を表示している Main.htm へリダイレクトします
そうすると、再び check_login.php が呼び出されて送信ボタンが押せる状態になります。

  
<?
session_start();
header( "Content-Type: text/html; Charset=shift_jis" );
header( "pragma: no-cache" );
header( "Expires: Wed, 31 May 2000 14:59:58 GMT" );
header( "Cache-control: no-cache" );

foreach( $_GET as $Key => $Value ) {
	$_POST[$Key] = $_GET[$Key];
}
foreach( $_POST as $Key => $Value ) {
	$_POST[$Key] = str_replace("\\\\", "\\", $Value );
	$_POST[$Key] = str_replace("\\'", "'", $_POST[$Key] );
	$_POST[$Key] = str_replace("\\\"", "\"", $_POST[$Key] );
}

if ( $_SERVER['REQUEST_METHOD'] == 'POST' ) {
	if ( $_POST['send'] == 'ログイン' ) {
		$_SESSION['user'] = 'lightbox';
	}
	if ( $_POST['send'] == 'ログアウト' ) {
		$_SESSION['user'] = '';
	}
	header( "Location: ./Main.htm" );
	exit();
}

print "<pre>";
print_r($_SESSION);
print "</pre>";
?>
<HTML>
<HEAD>
<META http-equiv="Content-type" content="text/html; charset=Shift_JIS">
<TITLE>HTML テンプレート</TITLE>
<STYLE type="text/css">
* {
	font-family: "MS Pゴシック";
	font-size: 12px;
}
BODY {
	background-color: forestgreen;
	color: white;
}
</STYLE>
<SCRIPT language="javascript" type="text/javascript">

// *********************************************************
// フォームのチェック
// *********************************************************
function CheckData() {

	return true;
}

</SCRIPT>
</HEAD>

<BODY>

<h3>ログイン</h3>
<FORM
	name="frmMain"
	method="POST"
	onSubmit='return CheckData()'
>

<INPUT name="send" type="submit" value="ログイン">
<INPUT name="send" type="submit" value="ログアウト">

</FORM>

</BODY>
</HTML>
  










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





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

SQLの窓フリーソフト

素材

一般WEBツールリンク

SQLの窓

フリーソフト

JSライブラリ