我正在使用oop pdo创建一个登录系统。当我登录用户时,没有创建会话。我认为它与我的数据库类有关。用户的凭据在数据库中是正确的,并且连接凭据是正确的。
用户类:
class USER
{
public function login($uname,$upass)
{
try
{
$stmt = Database::getInstance()->getConnection()->prepare("SELECT * FROM users WHERE user_name=:uname LIMIT 1");
$stmt->execute(array(':uname'=>$uname));
$userRow=$stmt->fetch(PDO::FETCH_ASSOC);
if($stmt->rowCount() > 0)
{
if(password_verify($upass, $userRow['user_pass']))
{
$_SESSION['user_session'] = $userRow['user_id'];
return true;
}
else
{
return false;
}
}
}
catch(PDOException $e)
{
echo $e->getMessage();
}
}
数据库类:
<?php
class Database {
private $_connection;
private static $_instance; //The single instance
/*
Get an instance of the Database
@return Instance
*/
public static function getInstance() {
if(!self::$_instance) { // If no instance then make one
self::$_instance = new self();
}
return self::$_instance;
}
// Constructor
private function __construct() {
try
{
$dsn = 'mysql:host=hostnmae;dbname=database name'; // define host name and database name
$username = 'username'; // define the username
$pwd='password'; // password
$this->_connection = new PDO($dsn, $username, $pwd);
}
catch(PDOException $e)
{
echo $e->getMessage();
}
}
// Magic method clone is empty to prevent duplication of connection
private function __clone() { }
// Get mysqli connection
public function getConnection() {
return $this->_connection;
}
}
?>
答案 0 :(得分:0)
是的,你需要在init.php中使用session_start() 并且需要在session_start
之前调用ob_start