如何在php中提交注册表单后自动登录?

时间:2015-09-01 05:09:38

标签: mysqli

我正在使用php mysqli编码,我创建注册表单和登录表单都是单独工作但现在我想在注册成功后提供登录。

这是我的注册码:

{
    # insert data into mysql database
    $sql = "INSERT  INTO `users` (`id`, `username`, `password`, `phone`, `email`) 
            VALUES (NULL, '{$name}', '{$password}', '{$phone}', '{$email}')";

    $query="SELECT * FROM users WHERE email= '$email'";

       if ($mysqli->query($sql)) {

        $reslt=$mysqli->query($query);
        $usr=$reslt->fetch_array();

        $_SESSION[user_email]=$usr['email'];

        redirect_to("profile.php?email={$_SESSION['user_email']}");
    } else {
        echo "<p>MySQL error no {$mysqli->errno} : {$mysqli->error}</p>";
        exit();
    }
}

我试过这种方式但是插入操作正常但页面是刷新的而不是重定向到我在代码中提到的“profile.php”

1 个答案:

答案 0 :(得分:0)

首先,我建议您登录时检查电子邮件和密码。您的查询应如下所示:

$query="SELECT * FROM users WHERE email= '$email' and password = '$password'";

接下来,if ($mysqli->query($sql)) {只验证sql操作是否成功。如果用户和密码错误,则sql将成功,但您将不返回任何行。

您需要做的是验证查询只返回1行。事实上,您的代码应该更像:

...
// check how many users correspond to the query
// ! the result will be an arry
$users = $reslt->fetch_array();

// if I have only one user, login is successfull
if(count($users) === 1) {
    $_SESSION['user_email'] = $users[0]['email'];
} else {
    // login failed
}
...