[PHP-users 29661] Re: sessionを使った認証フォームに関して
Daisuke Yamashita
yamashita @ ktk.gr.jp
2006年 7月 8日 (土) 11:52:57 JST
山下です。
こんなんでどうでしょう。
色々と私好みに直している部分がありますが・・・
まず、MySQL側(ユーザー名をユニークに)
ALTER TABLE `usr_tb` ADD UNIQUE `username` (`username`)
auth.inc.php
<?php
require_once("dbconn.inc.php");
session_start();
$username = $_POST['username'];
$password = $_POST['password'];
if ($username != "" || $password != "") {
$username = addslashes(trim($username));
$password = addslashes(trim($password));
$sql = "SELECT * FROM usr_tb WHERE username = '$username'";
$result = mysql_query($sql);
$rows = mysql_num_rows($result);
if ($rows == 1) {
$pass = mysql_result($result, 0, "passwd");
$nick = mysql_result($result, 0, "nick");
if ($pass == $password) {
$_SESSION['username'] = $username;
$_SESSION['nick'] = $nick;
} else {
$Err = "IDまたはパスワードに誤りがあります。";
}
} else {
$Err = "IDまたはパスワードに誤りがあります。";
}
} else {
$Err = "認証が必要です。ユーザー名とパスワードを入力して下さい。";
}
// 未エラー、$_SESSION['username'] が未登録の場合
if ($Err != "" && $_SESSION['username'] == "") {
authform($Err);
}
function authform($Err) {
echo $Err;
echo <<<EOC
<form method="post">
ユーザ名 <input type="text" name="username"><br />
パスワード <input type="password" name="password"><br />
<input type="submit" name="send" value="送る">
</form>
EOC;
exit;
}
?>
みなさんのご指摘通りに、他にも色々と調べてみてはどうでしょう。
--
山下 <yamashita @ ktk.gr.jp>
PHP-users メーリングリストの案内