gpt4 book ai didi

php - 如何在 PDO 中使用 session ?

转载 作者:行者123 更新时间:2023-12-04 15:52:49 26 4
gpt4 key购买 nike

我仍在重做并删除代码中的旧 mysql_* 命令。我试图从旧代码转移我的 session 登录,这是我到目前为止得到的:

  public function login($user, $password)
{
if (!empty($user) && !empty($password))
{
$password = $web->doHash($user, $password); // in this function is (return sha1(strtoupper($user).':'.strtoupper($password))
$stmt = $db_login->prepare("SELECT * FROM account WHERE username=:user AND pass_hash=:password");
$stmt->bindValue(':user', $user, PDO::PARAM_STR);
$stmt->bindValue(':password', $password, PDO::PARAM_STR);
$stmt->execute();
$rows = $stmt->rowCount();

if ($rows > 0)
{
$results_login = $stmt->fetch(PDO::FETCH_ASSOC);
$_SESSION['user_name'] = $results_login['username'];
$_SESSION['user_id'] = $results_login['id'];
return true;
}
else
{
return false;
}
}
else
{
return false;
}
}

之后我使用检查用户是否登录网站:

  public function isLogged()
{
return (!empty($_SESSION['user_id']) && !empty($_SESSION['user_name']));
}

但似乎 - 这个函数总是返回空,因为 $_SESSION 在 PDO 中不存在?当然,在我的网站上以这种形式使用注销:

  public function logout()
{
unset($_SESSION['user_id']);
unset($_SESSION['user_name']);
}

但我认为 PDO 有不同的处理 session 的方式?我没有找到任何东西,那么我可以在不更改代码的情况下以某种方式在 PDO 中添加 $_SESSION 是什么?

我在整个 Web 项目中使用变量 $_SESSION['user_name']$_SESSION['user_id']

总结:

1)如何正确使用PDO中的session?

2) 使用 $stmt->fetch(PDO::FETCH_ASSOC);$stmt->fetchAll(); 有什么区别

谢谢。

最佳答案

答案如下:

  1. 在您使用 session 的每个页面顶部调用 session_start()
  2. 区别在于 $stmt->fetch() 将获取一行,而 fetchAll() 将获取整个结果集。

关于php - 如何在 PDO 中使用 session ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10962345/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com