我的页面未重定向到login_success2.php
页面。相反,我被重定向到同一页面。
我的数据库名称分别为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");
}
答案 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
等)。
文档还指出,您可以使用问号代替命名参数,这在这种情况下可能会减少混乱。