尝试使用PHP创建登录

时间:2013-03-24 19:15:56

标签: php sql session login

暂且不考虑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';
    }

    ?>   

2 个答案:

答案 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) {