暂且不考虑SQL注入和其他安全问题我试图让下面的代码工作时遇到问题。我知道我很接近,但无法弄清楚如何做到这一点。目前我收到此错误消息:
“成功连接 警告:mysqli_fetch_array()期望参数1为mysqli_result,第30行的C:\ xampp \ htdocs \ proper \ checklogin.php中给出布尔值 用户名/密码错误“
Checklogin.php
<?php
session_start();
// Connect to server and select databse.
$conn= mysqli_connect("localhost", "root", "")
or die ('No connection');
print "Successful Connection";
mysqli_select_db($conn , 'ssssg3') or die ('database will not open');
// username and password sent from form
$email=$_POST['email'];
$password=$_POST['password'];
$sql = "SELECT * FROM log_in_info where email=$email";
$result=mysqli_query($conn, $sql);
$row=mysqli_fetch_array($result);
if ($row['password'] == $password) {
header('location:main1.php');
}
else
{
echo 'wrong username/password';
}
?>
答案 0 :(得分:3)
$sql = "SELECT * FROM log_in_info where email=$email";
这是你的错误所在。尝试:
$sql = "SELECT * FROM log_in_info where email='$email'";
查询失败,因为您需要将文字放入''。
请务必检查mysqli_query
的返回值,并使用mysqli_error
确定实际的错误消息。
要做一些正确的错误检查我建议(假设$email
已正确转义)
$sql = "SELECT * FROM log_in_info where email='$email'";
if(!$sql) die(mysqli_error($conn));
答案 1 :(得分:0)
注意,这不是错误消息。 “未定义的索引:密码”表示您访问数组键的内容,不存在的内容。为了避免id,你可以使用这样的代码(代码):
if (array_key_exists( 'password', $row ) and $row['password'] === $password) {