会话是有状态的,PHP用户代码不是

时间:2011-07-14 18:42:11

标签: php session

验证用户输入并存储登录凭据后,我通过调用session :: start启动会话,然后通过调用general :: reload重新加载index.php文件。我使用session :: is_start()来确定从索引文件加载哪个页面。

我认为这不正常,因为我总是加载相同的页面 - b1e.htm。

我担心的是我的静态类会话在AJAX / PHP调用和reload index.php调用之间没有维护它的值。

类似的帖子 - here

的index.php

  include 'b2.php'; 

  if(session::is_start())
    {
    include 'b2e.htm';  // user is logged in
    }
  else
    {
    include 'b1e.htm'; // user is not logged it
    }

Snippet - session:start()和session :: is_start();

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();
    }
  }

Snippet - general :: reload()

class general
  {
  public static function reload()
    {
    $uri = 'http://';
    $uri .= $_SERVER['HTTP_HOST'];
    header('Location: '.$uri.'/host_name');
    }

2 个答案:

答案 0 :(得分:1)

您可以封装和合并会话功能,但是您无法完全监视类的会话,因为php用户代码是无状态的(即使使用静态关键字)...即。这将取决于会议保留国家。

答案 1 :(得分:0)

您需要致电session_start();以在每个页面上实际开始会话。