0

我有两个“由同一个人制作”的 php 脚本,我让它们都调用同一个 mysql 数据库并合并所有表。现在它使用同一个表进行登录。所以我可以使用相同的用户名和密码登录,但是当我登录到主站点然后转到另一个脚本/客户端时。它要我重新登录。

我知道我必须包括一些东西或举行一个会议或一些东西(我不擅长 php)。所以我希望能够登录到主站点并转到 /client 并且仍然可以登录。有什么想法吗?

更新:他们都有一个 /lib/class_user.php 我相信会话开始的地方,这里是顶部的一些代码:

从主站点:

 /**
   * Users::startSession()
   * 
   * @return
   */
  private function startSession()
  {
    if (strlen(session_id()) < 1)
        session_start();

    $this->logged_in = $this->loginCheck();

    if (!$this->logged_in) {
        $this->username = $_SESSION['username'] = "Guest";
        $this->sesid = sha1(session_id());
        $this->userlevel = 0;
    }
  }

/**
   * Users::loginCheck()
   * 
   * @return
   */
  private function loginCheck()
  {
      if (isset($_SESSION['username']) && $_SESSION['username'] != "Guest") {

          $row = $this->getUserInfo($_SESSION['username']);
          $this->uid = $row['id'];
          $this->username = $row['username'];
          $this->email = $row['email'];
          $this->name = $row['fname'].' '.$row['lname'];
          $this->userlevel = $row['userlevel'];
          $this->sesid = sha1(session_id());
          $this->membership_id = $row['membership_id'];
          $this->access = $row['access'];
          return true;
      } else {
          return false;
      }  
  }

  /**
   * Users::is_Admin()
   * 
   * @return
   */
  public function is_Admin()
  {
      return($this->userlevel == 9 or $this->userlevel == 8);

  }

从 /client/lib/class_user.php:

  /**
   * Users::startSession()
   * 
   * @return
   */
  private function startSession()
  {
      session_start();
      $this->logged_in = $this->loginCheck();

      if (!$this->logged_in) {
          $this->username = $_SESSION['username'] = "Guest";
          $this->sesid = sha1(session_id());
          $this->userlevel = 0;
      }
  }

  /**
   * Users::loginCheck()
   * 
   * @return
   */
  private function loginCheck()
  {
      if (isset($_SESSION['username']) && $_SESSION['username'] != "Guest") {

          $row = $this->getUserInfo($_SESSION['username']);
          $this->uid = $row->id;
          $this->username = $row->username;
          $this->email = $row->email;
          $this->name = $row->fname . ' ' . $row->lname;
          $this->userlevel = $row->userlevel;
          $this->sesid = sha1(session_id());
      $this->currency = $row->currency;
          return true;
      } else {
          return false;
      }
  }

  /**
   * Users::is_Admin()
   * 
   * @return
   */
  public function is_Admin()
  {
      return ($this->userlevel == 9 or $this->userlevel == 5);

  }
4

1 回答 1

1

我的猜测是这两个脚本设置了不同的 $_SESSION 变量。如果您将其放在页面模板底部(或者如果您不使用模板系统,则为每个页面),这将向您显示正在设置的内容:

echo "<pre>";
print_r($_SESSION);
echo "</pre>";
于 2012-08-26T22:23:26.027 回答