我一直在使用此代碼,但無法找出錯誤。使用PDO登錄系統
它可以登錄,但它不會將ID傳遞到會話中。它適用於JQuery。
$loginresult = $db->prepare("SELECT * FROM users WHERE username = :username AND password = :password");
$loginresult->bindParam(":username", $username);
$loginresult->bindParam(":password", $encryptedPassword);
$loginresult->execute();
$result = $loginresult->fetch(PDO::FETCH_OBJ);
if($loginresult !== false){
$_SESSION['loggedin'] = microtime();
$_SESSION['userid'] = $result->id;
echo 'true';
}else{
echo 'false';
}
編輯:新代碼
<?php
require('../../config.php');
$username = $_POST['username'];
$password = $_POST['password'];
$encryptedPassword = crypt($password,$salt);
$loginresult = $db->prepare("SELECT * FROM users WHERE username = :username AND password = :password");
$loginresult->bindParam(":username", $username);
$loginresult->bindParam(":password", $encryptedPassword);
$loginresult->execute();
$count = $loginresult->rowCount();
var_dump($count);
print_r($db->errorInfo());
if($count){
$result = $loginresult->fetch(PDO::FETCH_OBJ);
var_dump($result);
print_r($db->errorInfo());
session_start();
$_SESSION['loggedin'] = microtime();
$_SESSION['userid'] = $result->id;
echo $result->id;
//echo 'true';
}else{
echo 'false';
}
?>
難道你不應該檢查'$ result'是否爲'false',而不是'$ loginresult'? '$ loginresult'是你的'PDOStatement'對象。另外,正如@jeroen所述,你需要'session_start()' – Phil