このコードを使用して、PHPで安全なログインページを作成しています。http://girlswhogeek.com/tutorials/2006/creating-a-secure-php-login-pageから入手しました。
<?php
$username = "user";
$password = "pass";
$randomword = "bibblebobblechocolatemousse";
if (isset($_COOKIE['MyLoginPage'])) {
if ($_COOKIE['MyLoginPage'] == md5($password.$randomword)) {
?>
CONTENT HERE
<?php
exit;
} else {
echo "<p>Bad cookie. Clear please clear them out and try to login again.</p>";
exit;
}
}
if (isset($_GET['p']) && $_GET['p'] == "login") {
if ($_POST['name'] != $username) {
echo "<p>Sorry, that username does not match. Use your browser back button to go back and try again.</p>";
exit;
} else if ($_POST['pass'] != $password) {
echo "<p>Sorry, that password does not match. Use your browser back button to go back and try again.</p>";
exit;
} else if ($_POST['name'] == $username && $_POST['pass'] == $password) {
setcookie('MyLoginPage', md5($_POST['pass'].$randomword));
header("Location: $_SERVER[PHP_SELF]");
} else {
echo "<p>Sorry, you could not be logged in at this time. Refresh the page and try again.</p>";
}
}
?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>?p=login" method="post">
<fieldset>
<label>
<input type="text" name="name" id="name" /> Name
</label>
<br />
<label>
<input type="password" name="pass" id="pass" /> Password
</label>
<br />
<input type="submit" id="submit" value="Login" />
</fieldset>
</form>
非常にうまく機能しますが、ログイン情報に誤りがあると、空白のページに切り替わり、ログイン情報が間違っているというメッセージがエコーされます。入力を含むページのdivにエコーさせる方法があるかどうか疑問に思いました。関連するエコーメッセージをdiv内に配置しようとしましたが、機能しませんでした。なぜ空白のページになるのかさえわからないことを認めなければなりません。
また、これはそれを行うための最良の方法ですか、それともより安全にする方法がありますか?
支援を提供していただきありがとうございます。
ベニー。