会话和有状态

时间:2011-07-14 20:47:03

标签: php session

如果PHP是无状态的,那么即使您将变量声明为静态,它们也不会在不同的运行中保留它们的值。因此,尝试使用如下所示的类来监视会话是没有意义的,因为会话在运行期间保持状态,但PHP用户代码不会。

class session
  {
  protected static $ses_id ="";
  public static function start()
    {
    self::$ses_id = session_start();
    }
  public static function is_start()
    {
    return self::$ses_id;
    }
  public static function finish()
    {
    self::$ses_id = 0;
    $_SESSION=array();
    if (session_id() != "" || isset($_COOKIE[session_name()]))
      {
      setcookie(session_name(), '', time()-2592000, '/');
      }
    session_destroy();
    }
  }

2 个答案:

答案 0 :(得分:2)

您编写的课程不会添加任何新功能,它只包含现有功能(由session_*功能提供)。如果您需要调解或控制对会话的访问权限,这种事情是值得的。只有你可以在你自己的应用程序中判断它是否值得。

答案 1 :(得分:2)

来自documentation

  

session_start()创建会话或恢复当前会话   通过GET或POST请求传递的会话标识符,或通过   饼干

这意味着您可以恢复会话,$ses_id将保持不变,会话有效,如果尚未销毁。

将它包装在类中可以是封装会话功能并以OOP方式访问它的好方法。您还可以扩展该类,以便轻松地保存相关会话数据,然后以比使用提供的session_ *函数更合理的方式在整个应用程序中访问这些数据。