読者です 読者をやめる 読者になる 読者になる

雨谷の日和

過去12年で1,600を超えるアニメの第1話だけは見続けた僕のお勧めアニメがハズレなはずがない

人狼BBS作成日記67

さて、ここまでのログイン/ログアウト関連の処理を組み込むことにします。
まず、入力してもらったキャラクター番号の値を受け取って、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 を呼ぶことにしています。
ログイン/ログアウトフォームの挿入場所は、まあ、どこでも良いのですが、とりあえずは画面の上の方にしようと思っています。