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>
<?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){
//プログラム内容
~
~
~
~
}
?>
<?php
session_start();
print("ログアウト完了<br />");
print("<a href='./login.php'>ログイン</a><br />");
session_destroy();//セッション破棄
?>
普通に関数使うとこんな感じか。
関数化、class化されてると楽だが、何が実装されてるかを調べなくてはいけないところなんだよな・・・
( ´ー`)フゥー
