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が表示される。

ログアウトボタンはページ内に適当にいれる。
なくてもよいです。

murarobo

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

コメントする