別のアップデート!2013年2月2 日PHPをバージョン5.3に更新すると、次のメッセージが表示されます。
致命的なエラー:キャッチされない例外'PDOException'とメッセージ'[アクティブなファイルがありません]: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
}
元の投稿
プロジェクトファイルをWebホストに切り替えました(ローカルで完全に機能します)。
このエラーが発生します。致命的なエラー:0行目の不明でスタックフレームなしで例外がスローされました。
とても助かります。現在、ファイルを1つだけ含めています。これは、入力されたユーザー名とパスワードのIDをカウントし、検出された内容に応じてtrueまたはfalseを返す1つの関数を持つクラスです。(1 =真、1以外は偽)。
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);
}
そして、これは私がセッションを設定した場所です、
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");
}
}
私は実際にはどこでも例外をスローしていません。このエラーの意味がわかりません。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;
}
インデックスページ(session_start、インデックスページ、ログインページを使用するすべてのページでエラーが発生します)
session_start();
if(!isset($_SESSION["user"])) {
header("Location: login.php");
}else {
//begin HTML, no more php after this (except the closing bracket)