处理登录数据后无重定向

时间:2018-11-27 17:15:04

标签: php

我的页面未重定向到login_success2.php页面。相反,我被重定向到同一页面。
我的数据库名称分别为society123,表名称member和列名称分别为emailpassword,分别用于电子邮件ID和密码。
谁能帮我这个忙吗???

session_start();
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "society123";
try {      
    $connect = new PDO("mysql:host=$servername;dbname=$dbname",$username,$password);
    $connect->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    if (isset($_POST["submit"])) {
        $eid = $_POST["eid"];
        $pass = $_POST["pass"];

        if (empty($_POST["eid"]) || empty($_POST["pass"])) {
            echo "all fields are required";
        } else {
            $query = "SELECT * FROM member where email = $eid AND password = $pass";
            $statement = $connect->prepare($query);
            $statement->execute(
                array(
                    'email' => $_POST["eid"],
                    'password' => $_POST["pass"]  
                )
            );
            $count = $statement->rowCount();
            if ($count > o) {
                $_SESSION["email"] = $_POST["eid"];
                header("location:login_success2.php");
            } else {
                echo "wrong data";
            }
        }
    }
} catch(PDOException $error) {
    $error->getMessage();
}

login_success2.php代码:

//login_success2.php  
session_start();  
if (isset($_SESSION["email"])) {  
    echo '<h3>Login Success, Welcome - '.$_SESSION["eid"].'</h3>';  
    echo '<br /><br /><a href="logout.php">Logout</a>';  
} else {  
    header("location:pdo_login.php");  
}

2 个答案:

答案 0 :(得分:0)

这将永远不会成功:

if($count > o){

您输入的是“ o”而不是0

if($count > 0){

因此永远不会设置会话变量。

*您可以通过转储带有会话变量的转储来删除重定向来查看它是否未设置,从而使诊断变得容易得多。老实说,我对此感到惊讶...

答案 1 :(得分:0)

除了William指出的$count错误(您正在检查o而不是0)之外,您还想重新检查PHP's documentation on PDO:Prepare命名参数。您在$query中的占位符应使用冒号(:email:password),而不是带有美元符号的实际PHP变量($email等)。

文档还指出,您可以使用问号代替命名参数,这在这种情况下可能会减少混乱。