我正在尝试构建一个登录表单,因此我在数据库中指定的管理员可以将图像插入到我的数据库中。
我遇到了一些错误:
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)第二个问题是......查看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';
?>
任何想法都将不胜感激!
答案 0 :(得分:1)
对于第一部分,如果您只想刷新页面,可以执行此操作。
<form action='' method=''>
否则,将login.php路径硬编码到处理文件可能更容易。
对于第二部分,我认为您错误地创建了数组。
$array = array();
$array[$username] = $password; // $username is the key and $password is the value aka.. array ($username => $password )
我不确定为什么,但似乎与
$array = (array)$userResult;
你试图将一个数组设置为一个通过函数运行的元组,并且该方法似乎不仅仅是设置键和值。
答案 1 :(得分:1)
您可以将操作保留为空白,例如action=""
,它将在同一页面中发布。
我不记得内部/外部的$_SERVER['PHP_SELF']
返回包含但是这一定是您的问题。
此外,您正在检查查询的用户名和密码,然后您只需要知道它是返回结果还是不要。检查行数:)
答案 2 :(得分:0)
非常感谢nimlhug,让它像这样工作......忘了我检查数据库的主要原因是实际看是否有匹配的结果...不知道为什么我再次检查是否有我刚才可以使用num_rows == 1
,哈哈。
<?php
include 'include/header.php';
?>
<center>
<h2>Admin Log in</h2>
<br/>
<form action="" 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>
<?php
$username = isset($_POST['username']) ? $_POST['username'] : "";
$password = isset($_POST['pw']) ? $_POST['pw'] : "";
if(verify($username, $password) == 1) {
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->num_rows;
}
include 'include/footer.php';
?>