私は PHP にはかなり慣れていませんが、テスト Web サイトで簡単なログイン ページを作成して、動作を確認することにしました。あまり安全ではないことはわかっていますが、まだあまり心配していません。私が抱えている問題は、ログインしようとすると、ユーザー名が正しいかどうかに関係なく、すぐにログインページにリダイレクトされることです。間違ったユーザー名またはパスワードを使用しても同じ結果が得られるため、ユーザー名とパスワードなどをチェックする PHP スクリプトに行くことさえないと思います。フォームが HTML であるため、これが PHP の問題かどうかは完全にはわかりません。そうでない場合は申し訳ありません。
ログインページ:
<?
include"includes/head.inc";
?>
<div class="login" align="center";>
<h1>Log In</h1>
<form action="/cp/login.php" method="post">
<table border="0" cellspacing="2" cellpadding="2">
<tr>
<td>
Email
</td>
<td>
<input type="text" name="username">
</td>
</tr>
<tr>
<td>
Password
</td>
<td>
<input type="password" name="password">
</td>
</tr>
</table>
<input type="submit">
</form>
</div>
<?
include"includes/footer.inc";
?>
ログイン.php:
<?
$username = $_POST['username'];
$password = $_POST['password'];
session_start();
include"../includes/connect.inc";
$q = "SELECT * from users where email='$username' and password='MD5($password)'";
$result = mysql_query($q, $connection) or die
("Could not execute query : $q." . mysql_error());
if (!$result) {
echo "<h1>Incorrect username or password.</h1>";
}
else {
$r = mysql_fetch_array($result);
$login_username = $r["email"];
session_register("login_username");
Header("Location: protected.php");
}
?>
Protected.php:
<?
session_start();
if ($login_username == "") {
Header("Location: ../login.php");
}
else {
include"../includes/head.inc";
include"../cp.inc";
include"../includes/footer.inc";
}
?>
必要な場合に備えてすべてのファイルを含めましたが、ログインページをループしているだけで、他のページを循環していないようです。入力しているユーザー名とパスワードは正しく、以前のログイン システムで機能していたので、書き直して機能を改善しました。ばかげたことや明白なことを見逃していないことを願っています。読んでくれてありがとう。