2012-08-26 162 views
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); 

    } 
+0

在同一個域中的兩個站點?會話cookie(如所有的cookie)是域特定的。如果這兩個網站是同一個域的子域,或者一個是另一個的子域,則可以在較高域中設置Cookie。 –

+0

你可以顯示一些編碼?????? – user1405062

回答

1

我的猜測是,這兩個腳本設定不同的$ _SESSION變量。這將告訴你什麼東西被設定,如果你把它的地方,如頁面模板的底部(或每個頁面,如果你不使用模板系統):

echo "<pre>"; 
print_r($_SESSION); 
echo "</pre>"; 
+0

從主頁:數組 ( [用戶名] =>管理員 [UID] => 1 [電子郵件] => [email protected] [用戶級] => 9 [membership_id] => 4 [訪問]從客戶機頁陣列=> ) –

+0

( [用戶名] =>管理員 [captchacode] => 81808 [用戶ID] => 1 [電子郵件] => [email protected] [用戶級] => 9 [currency] => ) 選擇表格選項 –

+0

看起來您的主頁正在使用$ _ SESSION ['uid']&您的客戶端頁面正在使用$ _SESSION ['userid']進行驗證。因此,爲了在兩種工作中進行單一登錄,可以使您的驗證腳本使用相同的變量,也可以讓他們檢查是否設置了任一變量。 – da5id

相關問題