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
。