Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/238.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 处理登录数据后没有重定向_Php - Fatal编程技术网

Php 处理登录数据后没有重定向

Php 处理登录数据后没有重定向,php,Php,我的页面没有被重定向到login\u success2.phppage。相反,我将被重定向到同一页面。 我的数据库名为society123,表名为member,列名分别为email和password,分别表示电子邮件id和密码。 有谁能帮我解决这个问题吗 session_start(); $servername = "localhost"; $username = "root"; $password = ""; $dbname = "society123"; try { $c

我的页面没有被重定向到
login\u success2.php
page。相反,我将被重定向到同一页面。
我的数据库名为
society123
,表名为
member
,列名分别为
email
password
,分别表示电子邮件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");  
}
//登录\u success2.php
会话_start();
如果(isset($_会话[“电子邮件]){
回显“登录成功,欢迎-.”会话[“eid]”;
回音“

”; }否则{ 标题(“位置:pdo_login.php”); }
这永远不会成功:

if($count > o){
您有一个“o”而不是0

if($count > 0){
因此,永远不会设置会话变量


*通过删除带有转储会话变量的重定向来查看它是否未设置,您可以更容易地诊断出这一点。老实说,我很惊讶这会运行…

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


文档还指出,您可以使用问号而不是命名参数,在这种情况下,命名参数可以减少混淆。

优秀的开发人员的关键在于良好的代码编辑器和良好的代码格式。一旦你这样做了,你很可能会意识到你的问题。
error\u reporting(E\u ALL)
var\u dump()
是你的朋友。如果答案不能帮助您解决问题,请使用其他信息更新您的问题。你有新的错误吗?
execute
语句的结果是什么?
$count
变量的值是多少?用户密码绝对不能以纯文本形式存储,只能作为散列存储。PHP有处理密码散列的函数,并有正确的错误报告。这应该是显而易见的,OP不需要问这个问题。@William_Wilson感谢您注意到这个错误,我用零更改了“o”,正如它应该做的那样,但如果错误报告被抑制(或记录到文件中),仍然没有任何更改然后将
o
视为字符串文本。在PHP上比较整数和字符串文字是完全有效的。@Dharman好吧,一切都很好,但我的代码怎么办?它仍然没有重定向我,我不明白为什么你能帮我解决这个问题,我需要这个用于我的项目。它仍然不起作用。我将$eid和$pass更改为:eid和:pass,但我仍然停留在相同的位置page@nilesh将其更改为
:email
:password