2013-02-01 34 views
0

另一個更新! 13年2月2日 更新PHP 5.3版本,它現在給了我這個消息,致命錯誤:異常拋出,未知堆棧幀在未知的第0行,session_start

致命錯誤:未捕獲的異常「PDOException」有消息[無活動文件]「你不能序列化或反序列化PDO實例」: 0堆棧軌跡:#0 [內部函數]:PDO - > __ sleep()#1 {main}在第0行拋出[no active file]

但是,我沒有使用serialize或unserialize函數.. 。

更新!

這是有效的,但它是不正確和醜陋的做法。而且我不希望像這樣做,但我想,這可能有助於

$db = new PDO("mysql:host=127.0.0.1;dbname=dbname;", "user", "pass"); 
public function login($user, $pass) { 
    global $db; 
    //stuff 
} 

原帖

我只是切換我的項目文件到我的虛擬主機(它完美本地)。

我得到這個錯誤,致命錯誤:沒有異常堆棧幀扔在未知在線0

它是如此有幫助的。我現在只包括一個文件,它是一個具有一個函數的類,它可以計算輸入的用戶名和密碼的ID,然後根據它找到的內容返回true或false。 (1 =真,除1 =假外)。

我使用的PDO(MySQL的),如果我不連接到我的數據庫,我不明白的錯誤,但如果我刪除的session_start();從我的文檔頂部我也沒有得到錯誤。 private $ 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(); 
if(!isset($_SESSION["user"])) { 
    header("Location: login.php"); 
}else { 
    //begin HTML, no more php after this (except the closing bracket) 
+0

爲什麼不使用try-catch?並通過getMessage()查看錯誤? –

+0

是什麼讓你覺得這會有所幫助?代碼正在工作,它連接到數據庫,它檢查輸入的用戶名和密碼是否正確,它設置會話,如果未設置會話,它會重定向。總而言之,它的運作非常完美,除非它無論如何都給了我這個錯誤。 – Andreas

+0

你升級了mysql版本嗎? –

回答

3

(使用在session_start,索引頁面和登錄頁面的每一頁上出現錯誤)我將會話重命名爲「用戶名」而不是「用戶」,然後開始工作。我爲$ user調用了我的用戶類,所以我想當我嘗試命名會話的時候,事情發生了非常嚴重的錯誤。這仍然是非常奇怪,因爲$用戶變量和「用戶」是一個字符串> _>

不管怎麼說,問題已經解決了,謝謝你的PHP是相當愚蠢的時候。

更新

罪魁禍首這整個時間是在php.ini register_globals的。它已在我的本地服務器上關閉,但已在我的主機上打開。

儘管到處都是關閉的。我想我可以補充一點,以防將來遇到這個問題。

+0

這是奇怪的大聲笑。有同樣的問題。謝謝。 – dontHaveName

相關問題