【问题标题】:Custom PHP Session Class自定义 PHP 会话类
【发布时间】:2012-10-27 21:54:03
【问题描述】:

我想做的是编写一个自定义的 PHP 会话类,将会话存储在数据库中,而不使用 session_set_save_handler()

这样做的目的是让我可以轻松地使用serialize() 存储数据并使用unserialize() 返回数据。

我已经找了一整天了,找不到关于这个主题的任何东西。谁能帮助我入门或链接到有用的教程?

谢谢。

【问题讨论】:

  • 问题是您对要查找的内容没有一个清晰的概念。
  • 为什么 session_set_save_handler() 会阻止你使用 serialize()? session_set_save_handler() 的目的是自定义会话。不使用它的唯一方法是完全从头开始创建自己的会话处理(这意味着您也不能使用 $_SESSION 全局...至少不是以有意义的方式。
  • @Cfreak 这就是我要找的。一个完整的自定义处理程序。

标签: php database oop class session


【解决方案1】:

您不需要内置的 PHP 会话,您可以自己设置 cookie,读取它并再次验证它,从那时起您就有了一个功能齐全的会话!

function createCookieString($id, $user, $created)
{
    $cookieData = array();
    $hash = $this->hashSession($id, $user, $created);

    $cookieData[] = $id;
    $cookieData[] = $user;
    $cookieData[] = $created;
    $cookieData[] = $hash;

    return implode(':', $cookieData);
}

function hashSession($id, $user, $created)
{
    $cookieSalt = 'Your Cookie Salt'; //google what a salt is in hashing if neccecary
    return md5($id.$user.$created.$cookieSalt);
}

function parseCookieString($string)
{
    return explode(':', $string);

}

要设置cookie,只需使用php的setcookie函数即可。

您只需将会话存储在数据库中。它通常非常简单,只需创建一个带有 ID、userID 的表(作为时间戳),您不需要将哈希存储在您的数据库中,因为它是一个可重用的秘密。

如有更多问题,请随时提出!

【讨论】:

  • 谢谢,试试看,如果我喜欢,我会给你最好的答案。 :)
猜你喜欢
  • 2021-05-18
  • 2015-04-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多