ユーザ名 hoge パスワード geho,またはユーザ名・パスワードともに guest で入れます。
このページの最初の部分は次のようになっています:
<?php
session_set_cookie_params(0, '/~okumura/php/');
session_start();
$users = array('hoge' => 'geho', 'guest' => 'guest');
$u = $_POST['username'];
$p = $_POST['password'];
if ($u != '' && $p != '') {
if ($p == $users[$u]) $_SESSION['username'] = $u;
else unset($_SESSION['username']);
}
?>
ここで $users = array('hoge' => 'geho', 'guest' => 'guest');
は $users['hoge'] = 'geho'; $users['guest'] = 'guest';
と同じことです。
上のフォームの部分は次のように書いてあります:
<?php if (!isset($_SESSION['username'])) { ?>
<form action="login.php" method="post">
<p><label for="username">Username:</label> <input id="username" name="username" size="20"></p>
<p><label for="password">Password:</label> <input type="password" id="password" name="password" size="20"></p>
<p><input type="submit" value="ログイン"></p>
</form>
<p>ユーザ名 hoge パスワード geho,またはユーザ名・パスワードともに guest で入れます。</p>
<?php } else { ?>
<p>あなたは <?php echo htmlspecialchars($_SESSION['username']) ?> としてログインしています。</p>
<form action="login.php" method="post">
<p>
<input type="hidden" name="username" value="dummy">
<input type="hidden" name="password" value="dummy">
<input type="submit" value="ログアウト">
</p>
</form>
<?php } ?>
生パスワードをPHPソース(または別のテキストファイルまたはデータベース)に格納するのではなく,そのハッシュ値を格納しておくほうが安全です。 例えばパスワードが geho の場合,md5('geho') の値 '76e7975454ce7833a24ba266f5b75503' を格納しておき,パスワードを入力したらその md5 値がこれと等しいか調べます。 md5 値から元のパスワードは容易にわかりません。 y = md5(x) から x の値を求めるのは現時点では不可能ですが,md5(x1) = md5(x2) を満たす x1,x2 を見つける方法はすでに存在しますので,用途によっては md5() はすでに十分安全ではありません。 一般には,今後は md5() よりもっと良いハッシュ関数 sha1() をお薦めします。
Last modified: 2012-04-18 16:10:51