php tips パスワードで閲覧制限
パスワードのみバージョン
ID入力はなくパスワードのみ。複数のログインIDをつくるにはindexとか最小限のファイルの入ったサブディレクトリーを作る。
password.php
パスワードもデータベースで読み書きするようにするとかっこいい。
サブディレクトの中にpassword.phpというファイルをおいておくのは相当間抜けなので注意が必要っぽい。
define("PASSWORD", "パスワード");
login.php
<form action="" method="post">
<input name="password" type="text" value="pass">
<input name="action" type="submit" value="login">
</form>
<?php
session_start();
if(isset($_POST["action"])&&$_POST["action"]==="login"){
if(PASSWORD === $_POST["password"]){
$_SESSION["PSW"] = md5(PASSWORD);
header("Location:index.php"); //ログイン後に移動するページ
}else{
session_destroy();
print "パスワードが違います";
}
}
?>
login.php
<form action="" method="post">
<input name="password" type="text" value="pass">
<input name="action" type="submit" value="login">
</form>
<?php
session_start();
if(isset($_POST["action"])&&$_POST["action"]==="login"){
if(PASSWORD === $_POST["password"]){
$_SESSION["PSW"] = md5(PASSWORD);
header("Location:index.php"); //ログイン後に移動するページ
}else{
session_destroy();
print "パスワードが違います";
}
}
?>
index.php
<?php
session_start();
if(isset($_SESSION["PSW"]) && $_SESSION["PSW"] != null && md5(PASSWORD) === $_SESSION["PSW"]){
DoContents();
}else{
session_destroy();
include "redirect.php";
}
DoContents(){
?>
|
|
こ こ に H T M L
|
|
<?php } ?>
redirect.php
<
<
<head>
<meta http-equiv="Content-Type" content="text/html; charset=shift_jis" />
<meta http-equiv="refresh" content="0 ; URL=login.php">
<title>タイトル</title>
</head>
login.phpよりログインしてください。
</body>
</html>
<a href="index.php?logout=1">ログアウト</a>
<?php
if(isset($_GET['logout'])){
$_SESSION = array();
if (ini_get("session.use_cookies")) {
$params = session_get_cookie_params();
setcookie(session_name(), '', time() - 42000,
$params["path"], $params["domain"],
$params["secure"], $params["httponly"]
);
}
session_destroy();
header("Location:login.php");
}
?>
パスワードは他のファイルにしておいてIncludeしないとファイルが増えると変更が大変。
今まで作ったトップの中身をindex.phpにコピペでパスワード制限が付く。
他のページも同様。
ログインしない状態で制限ページにアクセスしようとするとlogin.phpが表示される。
ログアウトボタンはページ内に適当にいれる。
なくてもよいです。