簡単なif文でちゃんと分岐しません
今参考書を見ながらやっていますがうまくいきません。
postからusernameとpasswordの値を受け取って処理する
スクリプトなんですが、うまく作動してくれません。
■問題点
分岐点が4箇所ありますが、
パスワードだけ間違っても、すべて■1■ ログイン処理状態になります。
どうしてもパスワード再設定の画面に切り替わりません。
入力されたデータはデータベースにきちんと入ります。
3日間これで悩んでいて、ついに投稿してみました。
こんなこともわからない私ですが
なんとかお願い致します。
----ここから----
<?php
session_start();
$username = $_POST["username"];
$sql = "SELECT * FROM `art_users` WHERE `user_name` = '%{$username}%'";
$query = mysql_query($sql) or die("データ追加エラー" . mysql_error());
$record = mysql_fetch_array($query, MYSQL_ASSOC);
if ( $_POST["mode"] == "login" && mysql_num_rows($query) > 0 && $_POST["password"] == $record["user_password"] ) {
$_SESSION["userid"] = $record["user_id"];
header("Location: kaukau_top.php");
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>ログイン処理</title>
</head>
<body>
<?php
// ■1■ ログイン処理状態
if ( $_POST["mode"] == "login" ) {
// 新規登録:クエリ実行結果が0行=既存ユーザー名と一致しない
if ( mysql_num_rows($query) == 0 ) {
echo '新規ユーザー登録<br>';
echo '<form action="kaukau_login.php" method="POST">';
echo '<input type="hidden" name="mode" value="register">';
echo '<input type="submit" value="登録">';
echo '</form>';
}
// パスワードミス:クエリ実行結果のパスワードと入力されたパスワードが一致しない
elseif ( $_POST["password"] != $record["user_password"] ) {
echo 'パスワードが違います。<br>';
echo 'ひみつの質問に答えると、パスワードを変更できます。<br>';
echo '<form action="kaukau_login.php" method="POST">';
echo '<input type="hidden" name="username" value="' . $username . '">';
echo '<input type="hidden" name="mode" value="resetpassword">';
echo '<input type="submit" value="送信">';
echo '</form>';
}
}
// ■2■ パスワード再設定状態
elseif ( $_POST["mode"] == "resetpassword" ) {
if( $record["user_answer"] == $_POST["answer"] ) {
echo 'パスワード再設定<br>';
echo '<form action="kaukau_login.php" method="POST">';
echo '<input type="hidden" name="username" value="' . $username . '">';
echo '<input type="hidden" name="mode" value="modifypassword">';
echo '<input type="submit" value="登録">';
echo '</form>';
}
else{
echo "ひみつの答えが違います";
}
}
// ■3■ 新規ユーザー登録状態
elseif ( $_POST["mode"] == "register" ) {
if( $_POST["password"] == $_POST["confirm"] ) {
$sql = "INSERT INTO users (user_name, user_password, user_question, user_answer) VALUES (";
$sql .= " '" . $_POST["username"] ."',";
$sql .= " '" . $_POST["password"] ."',";
$sql .= " '" . $_POST["question"] ."',";
$sql .= " '" . $_POST["answer"] ."')";
$result = mysql_query($sql);
echo '登録しました。';
}
else {
echo 'パスワードを再確認してください。';
}
}
// ■4■ パスワード変更状態
elseif ( $_POST["mode"] == "modifypassword" ) {
if ( $_POST["password"] == $_POST["confirm"] ) {
$sql = "UPDATE users";
$sql .= " SET user_password = '" . $_POST["password"] . "'";
$sql .= " WHERE user_name = '" . $_POST["username"] . "'";
mysql_query( $db, $sql );
echo '登録しました。';
}
else {
echo 'パスワードを再確認してください。';
}
}
?>
</body>
</html>