データベースで指定した管理者が画像をデータベースに挿入できるように、ログイン フォームを作成しようとしています。
いくつかのエラーがあります:
1)自分<?php echo $_SERVER['PHP_SELF']; ?>
自身を呼び出す(Login.phpを呼び出す)ために使用しているため、その下(同じファイル内)にあるPHPコードがロードされます。送信を押すたびに、php コードで指定されたヘッダーに移動するのではなく、homepage.php に戻ります。
Login.php:管理者ログイン フォームの html
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<table>
<tr>
<td>Username: </td><td><input type="text" name="username"></td>
</tr>
<tr>
<td>Password: </td> <td><input type="text" name="pw"></td>
</tr>
</table>
<br />
<input type="submit" value="Log in">
</center>
2) 2 番目の問題は... php コードを見て、関連付けられた配列の特定のキーを取得できる関数を見つけようとしています。たとえば、データベース クエリを実行し、それを関連付け配列として $result に格納し、それを返します。次に、ユーザー テーブルからキー (「ユーザー名」と「パスワード」) を取得し、それらを上記の html フォームからの入力と比較します。
array_keys を使用してみましたが、オブジェクトではなく配列が必要です。だから私はそれをキャストしましたが、それでも機能しません。
print_r(array_keys($userResult, "username"));
必要なキーが出力されるかどうかを確認するために使用しています。
Login.php PHP コード
<?php
$username = isset($_POST['username']) ? $_POST['username'] : "";
$password = isset($_POST['pw']) ? $_POST['pw'] : "";
$userResult = verify($username, $password);
$array = (array)$userResult; //cast to array
print_r(array_keys($userResult, "username"));
if(array_keys($userResult, "username") == "dan" && array_keys($userResult, "password") == "12345") {
header("Location: ?action=admin");
}
else {
echo "<center>Incorrect credentials</center>";
}
function verify($user, $pw) {
include './scripts/dbconnect.php';
$result = $mysqli->query("SELECT username, password FROM users WHERE username='" . $user . "' AND password='" . $pw . "'");
return $result;
}
include 'include/footer.php';
?>
どんな考えでも大歓迎です!