And*_*eas 0 php mysql session pdo exception
另一个更新!2013 年 2 月 2 日 将 PHP 更新到版本 5.3,现在它给我这条消息,
致命错误:在 [无活动文件] 中未捕获异常“PDOException”,消息“您无法序列化或反序列化 PDO 实例”:0 堆栈跟踪:#0 [内部函数]:PDO->__sleep() #1 {main} 抛出[无活动文件] 第 0 行
但是,我没有使用序列化或反序列化函数......
更新!
这是可行的,但这是不正确且最丑陋的做法。我不想这样做,但我认为这可能会有所帮助
$db = new PDO("mysql:host=127.0.0.1;dbname=dbname;", "user", "pass");
public function login($user, $pass) {
global $db;
//stuff
}
Run Code Online (Sandbox Code Playgroud)
原帖
我刚刚将我的项目文件切换到我的网络主机(它在本地完美运行)。
我收到此错误,致命错误:在第 0 行的未知中没有堆栈帧的情况下抛出异常。
这太有帮助了。我现在只包含一个文件,它是一个具有一个函数的类,该函数计算输入的用户名和密码的 ID,然后根据发现的内容返回 true 或 false。(1 = true,除了 1 = false)。
我正在使用 PDO (mysql),如果我不连接到我的数据库,我不会收到错误,但如果我删除 session_start(); 从我的文档顶部我也没有收到错误。私有$db;
public function __construct() {
$this->db = new PDO("mysql:host=127.0.0.1;dbname=dbname;", "user", "pass");
$this->db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
Run Code Online (Sandbox Code Playgroud)
这就是我设置会话的地方,
if(isset($_POST["submit"])) {
$errors = array();
if($user->login($_POST["user"], $_POST["pass"]) === false) {
$errors[] = "Username or password is incorrect";
}
if(empty($errors)) {
$_SESSION["user"] = $_POST["user"];
header("Location: index.php");
}
}
Run Code Online (Sandbox Code Playgroud)
我实际上并没有在任何地方抛出异常。我不知道这个错误意味着什么。我正在运行 PHP 版本 5.2.17
这是我的登录功能,
public function login($user, $pass) {
$sql = $this->db->prepare("SELECT COUNT(`id`) FROM `users` WHERE `username` = :user AND `password` = :pass");
$sql->bindParam(":user", $user);
$sql->bindParam(":pass", $pass);
$sql->execute();
return ($sql->fetchColumn() == 1) ? true : false;
}
Run Code Online (Sandbox Code Playgroud)
索引页(每个使用session_start的页面都会出错,索引页和登录页)
session_start();
if(!isset($_SESSION["user"])) {
header("Location: login.php");
}else {
//begin HTML, no more php after this (except the closing bracket)
Run Code Online (Sandbox Code Playgroud)
我将会话重命名为“用户名”而不是“用户”,然后它开始工作。我将我的用户类称为 $user,所以我猜当我尝试以相同的方式命名会话时,出现了严重错误。这仍然非常奇怪,因为 $user 是一个变量,而“user”是一个字符串 >_>
不管怎样,问题已经解决了,谢谢 PHP 有时相当愚蠢。
更新
整个过程中的罪魁祸首是 PHP.ini 中的 register_globals。它在我的本地服务器上关闭,但在我的主机上打开。
不过现在到处都关掉了。我想我可以添加这个以防将来有人遇到这个问题。
| 归档时间: |
|
| 查看次数: |
9573 次 |
| 最近记录: |