0

撇开 SQL 注入和其他安全问题不谈,我在尝试使以下代码工作时遇到了问题。我知道我很接近,但不知道该怎么做。目前我收到此错误消息:

“成功连接警告:mysqli_fetch_array() 期望参数 1 为 mysqli_result,布尔值在 C:\xampp\htdocs\proper\checklogin.php 第 30 行错误的用户名/密码中给出”

检查登录.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';
    }

    ?>   
4

2 回答 2

3
$sql = "SELECT * FROM log_in_info where email=$email";

这就是你的错误所在。尝试:

$sql = "SELECT * FROM log_in_info where email='$email'";

查询失败,因为您需要将文字放入“”。一定要检查返回值mysqli_querymysqli_error用来确定实际的错误信息。

我建议做一些适当的错误检查(假设$email已正确转义)

$sql = "SELECT * FROM log_in_info where email='$email'";
if(!$sql) die(mysqli_error($conn));
于 2013-03-24T19:18:55.697 回答
0

请注意,这不是错误消息。“未定义索引:密码”的意思是,您访问数组键的内容,不存在的内容。为了避免 id 你可以使用这样的(为你的代码):

if (array_key_exists( 'password', $row ) and $row['password'] === $password) {
于 2013-03-24T19:34:30.903 回答