さて、ここまでのログイン/ログアウト関連の処理を組み込むことにします。
まず、入力してもらったキャラクター番号の値を受け取って、Cookie に放り込む場合と、ログアウトのときにCookie のデータをクリアする場合の、処理の分岐をメインルーチンに組み込みます。
if($Cookie_Tbl{ 'index' } ne "" ){ $Login_Index = $Cookie_Tbl{ 'index' }; } if( $Query_Tbl{'mode'} eq "login"){ if( $Query_Tbl{ 'msg' } ne "" ){ &SET_COOKIE( $Query_Tbl{ 'msg' } ); } print "Location: $Cgi_Main\n\n"; }elsif( $Query_Tbl{'mode'} eq "logout"){ &CLEAR_COOKIE; print "Location: $Cgi_Main\n\n"; }...
最初にLogin_Index をCookie_Tbl の値で初期化していますが、これはログインしている場合の値の保持を目的としています。ログインしていない場合には、Login_Index は「-1」になるという予定です。
そのあと、ログインフォームからの入力であればSET_COOKIE サブルーチンを、ログアウトの場合であればCLEAR_COOKIE サブルーチンを呼ぶことにしています。
ただしログインの場合、入力された値が空であれば、Cookie にはデータをセットしないようにしています。
次に、入力フォームのHTMLへの出力部分をHTML出力のメインルーチンに組み込みます。
if($Login_Index > -1){ &STDOUT_LOGOUT_FORM; }else{ &STDOUT_LOGIN_FORM; }
ログインしている場合には、STDOUT_LOGOUT_FORM サブルーチンを呼び、ログインしていない場合にはSTDOUT_LOGIN_FORM を呼ぶことにしています。
ログイン/ログアウトフォームの挿入場所は、まあ、どこでも良いのですが、とりあえずは画面の上の方にしようと思っています。