2015-10-18 31 views
1

工作因此很容易判斷一個用戶是在線還是離線與我建立了CMS,並作爲現在我有簡單的在線檢查

class IUser { 
    public function User($arg) { 
     switch($arg) { 
      case "online": 
      self::CheckKey(); 
      break; 
     } 
    } 
    public function CheckKey() { 
     if(isset($_SESSION['key']['userid'])) { 
      return true; 
     } 
     else { 
      return false; 
     } 
    } 
} 

然後進行實際檢查我有

$user = new IUser(); 
if($user->User("online") == true) { 
    echo "user online"; 
} 
else { 
    echo "user offline"; 
} 

所以在理論上它應該顯示用戶離線時沒有設置id密鑰,而是隻是總是返回false。如果有人看到我在這裏做錯了,這將不勝感激。

+0

我不明白這背後的想法...該用戶平均在自己的會議,以檢查他是否在線?他怎麼能脫機呢? – arkascha

+0

編號這是爲插件創建等。而不是讓作者寫'if(isset($ _ SESSION ['key'] ['userid']){// do stuff}'這只是一個通用的方式,創建他們可以使用的鉤子if(User(「online」)== true {// do stuff}' –

+0

我還是不明白,對不起,當然,你可以在你的條件中使用這個符號。仍然存在:爲什麼用戶應該在Web應用程序中檢查自己的在線狀態?因爲我不明白爲什麼在'$ _SESSION'中可以找到其他用戶的id,但是也許我錯過了這裏的東西或者你的會話中有創意容器 – arkascha

回答

0

User函數不返回任何東西。你需要一個額外的return傳播支票給調用者的結果:

public function User($arg) { 
    switch($arg) { 
     case "online": 
     return self::CheckKey(); // < -- At the start of this line. 
     break; 
    } 
} 
+0

非常感謝。我認爲通過定義在CheckKey函數內返回,我正在做我需要的東西來獲得價值,但增加這個簡單的返回就像魅力一樣。再次感謝。不知道我會用這麼一點點文字來敲打我的頭。 –

+1

CheckKey中的返回值很好地返回給用戶,但在那裏被忽略而不是再次返回到調用代碼片段。與例外情況相反,退貨不會「冒泡」。但我想你從現在開始永遠不會忘記。 :) – GolezTrol

+1

這是正確的。我從這一點知道。在我自己的web應用程序上工作,這似乎比用isset會話起草插件更簡單,只是一個簡單的例子就是用戶在線的真實性,所以它可能是我得到的最複雜的,但是把自己逼到我的舒適區之外讓我學習比我想過的更多的東西:) –

0

您的用戶()函數必須返回的東西...

<?php 

session_start(); 

$_SESSION['key']['userid'] = 1; 


class IUser 
{ 
    public function User($arg) 
    { 
     switch($arg) { 
      case "online": 
       return self::CheckKey(); 
      break; 
     } 
    } 
    public function CheckKey() 
    { 
     if(isset($_SESSION['key']['userid'])) { 
      return true; 
     } else { 
      return false; 
     } 
    } 
} 

$user = new IUser(); 
if($user->User("online") ) { 

    echo "user online"; 

} else { 

    echo "user offline"; 

} 

?> 
+0

希望這是這麼簡單,我實際上已經在我的預加載器文件'session_start()中手動設置了會話變量。 $ _SESSION [ '鍵'] =陣列( \t '用戶ID' \t => SHA1(1), \t '用戶名' \t => SHA1( 「orion5814」), \t '電子郵件' \t \t => SHA1( 「[email protected]」), \t); ' –

+0

只要您在User()函數中使用return,沒關係。這只是一個使用示例。現在,如果你正在查看另一個用戶而不是你的狀態,那是另一個故事...... – BornKillaz