我正在使用this代码作为创建登录页面的引用,但是当我登录后重定向到主页时,我能够看到仪表板,但同时我也收到这两个错误
1) 警告:PDOStatement::execute() [pdostatement.execute]: SQLSTATE[HY093]: 无效参数号:参数未定义
2) 警告:无法修改 header 信息 - header 已发送
这些错误是由 session 页面引起的。
session.php
<?php
$dbhost = "localhost";
$dbname = "abc";
$dbuser = "abc";
$dbpass = "pwd";
$conn = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbuser, $dbpass);
session_start();
$user_check=$_SESSION['login_user'];
$result = $conn->prepare("SELECT * FROM register WHERE email = :user_check");
$result->execute(array(":usercheck"=>$user_check));
$row = $result->fetch(PDO::FETCH_ASSOC);
$login_session =$row['email'];
$user_id =$row['id'];
$user_passwords = $row['password'];
if(!isset($login_session))
{
$conn = null;
header('Location: login_form.html');
}
?>
谁能告诉我如何消除这些错误?
P.S 当我将查询中的 :$user_check 更改为 :user_check OR usercheck 时(根据它,下一个数组语句也会更改),登录页面停止重定向到仪表板,而是定向到登录再次翻页。
最佳答案
正如怀疑的那样,有一个拼写错误导致了第一个错误。
$result = $conn->prepare("SELECT * FROM register WHERE email= :$user_check");
$result->execute(array(":usercheck"=>$user_check));
应该是
$result = $conn->prepare("SELECT * FROM register WHERE email= :usercheck");
$result->execute(array(":usercheck"=>$user_check));
您的第二个错误可能是因为您没有将 session_start();
放在脚本的最顶部。
关于php - 使用 PDO 登录后显示个人资料页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26600654/