0

「同じ人が作成した」2つのphpスクリプトがあり、両方とも同じmysqlデータベースを呼び出し、すべてのテーブルを結合しています。現在、ログインに同じテーブルを使用しています。したがって、両方に同じユーザー名とパスワードを使用してログインできますが、メイン サイトにログインしてから他のスクリプト /client に移動すると、. もう一度ログインしてほしい。

何かを含めるか、セッションまたは何かを保持する必要があることを知っています(私は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

私の推測では、2 つのスクリプトは異なる $_SESSION 変数を設定しています。これは、ページ テンプレート (テンプレート システムを使用していない場合は各ページ) の下部のような場所に配置すると、設定されている内容が表示されます。

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