PHP ログインsessionの維持と破棄

2010年 06月 16日

    最近はフレームワークが便利すぎて、簡単な Login Auth のプログラムを忘れかけてたのでおさらい。
    (table組みでごめんなさい)

    • login.php
    • <?php
      
      define("PASSWORD", "admin");//パスワード定数
      
      session_start();
      
      if(isset($_POST["action"])&&$_POST["action"]==="login"){
      	if(PASSWORD === $_POST["password"]){
      		$_SESSION["flag"] = PASSWORD;
      		header("Location:edit.php");
      	}else{
      		session_destroy();//セッション破棄
      		message();
      	}
      }
      ?>
      <?php
      function message(){
      	print "パスワードが違います";
      }
      
      ?>
      <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
      <html xmlns="http://www.w3.org/1999/xhtml">
      <head>
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
      <meta name="robots" content="noindex,nofollow,NOARCHIVE" />
        <title>ログイン</title>
      </head>
      <body>
      
      <form action="./index.php" method="post">
      <table border="0" width="220" height="50">
      	<tr>
      		<td align="center" valign="middle" width="220" height="50">
      		<b>[認証画面]</b>
      		</td>
      	</tr>
      </table>
      <table border="1" bordercolor="#ff0000" width="220" height="60">
      	<tr>
      		<td align="right" valign="middle" width="100" height="30">
      		パスワード:
      		</td>
      		<td align="center" valign="middle" width="120" height="30">
      		<input type="password" name="password" />
      		</td>
      	</tr>
      	<tr>
      		<td colspan="2" align="center" valign="middle" width="80" height="50">
      		<input name="action" type="submit" value="login" />
      		</td>
      	</tr>
      </table>
      </form>
      
      </body>
      </html>
      
    • session.php(セッション保持したいファイル)
    • <?php
      
      define("PASSWORD", "admin");
      session_start();
      if(isset($_SESSION["flag"]) && $_SESSION["flag"] != null && PASSWORD === $_SESSION["flag"]){
      	//認証成功
      	print $html = <<<LOGOUT
      <form action="./logout.php" method="post">
      <table border="0" width="160" height="50">
      	<tr>
      		<td align="center" valign="middle" width="80" height="50">
      		<input type="submit" name="logout" value="ログアウト">
      		<input type="hidden" name="password" value="">
      		</td>
      	</tr>
      </table>
      </form>
      LOGOUT;
      
      }else{
      	//認証失敗
      	session_destroy();//セッション破棄
      	print "Login false><br /><a href='./login.php'>login</a>";
      }
      
      if($_SESSION["flag"] != null){
      //プログラム内容
      ~
      ~
      ~
      ~
      }
      ?>
      
    • logout.php
    • <?php
      
      session_start();
      
      print("ログアウト完了<br />");
      print("<a href='./login.php'>ログイン</a><br />");
      
      session_destroy();//セッション破棄
      
      ?>
      

    普通に関数使うとこんな感じか。
    関数化、class化されてると楽だが、何が実装されてるかを調べなくてはいけないところなんだよな・・・
    ( ´ー`)フゥー

    ★☆★☆★☆ ナウでヤングなレンタルサーバー!ロリポップ! ☆★☆★☆★
    月額105円~容量最大30GB!WordpressやMovable Typeの簡単インストール付★

    Post a Comment