2013-06-20 73 views
0

我一直在開發一個PHP AJAX聊天。 我現在想添加/ ban等命令。PHP AJAX聊天 - 聊天命令的邏輯?

但我不知道我該怎麼做。

首先,我希望命令以'/'開頭。

我必須首先檢查發送的郵件是否以'/'開頭,是否正確? 然後看看命令'禁止'是否存在,但它會如何知道,在句子中,用戶名將顯示在哪裏?

我真的很困惑,因爲我不知道在哪裏以及如何開始。 有沒有類似於我的需求的命令系統的開源?

+0

那麼如果**你**,你自己定義命令爲'/ ban user',這對於解析輸入字符串來說非常簡單。 – Sebas

+0

你正在開發這個系統,所以這取決於你的工作方式...... – crush

+0

我從來沒有在我的生活中做過這樣的事情,並且我有一個關於如何做到這一點的想法,Crush。因此,我需要一些關於如何處理它的解釋,例子,來源和更多有用的信息。 –

回答

2

您需要定義語法爲您的命令自己。例如/ban <username>禁止。

  1. 首先你檢查消息是否以斜槓開始。如果是的話,這是一個命令。
  2. 現在搜索第一個空格,斜槓後面的所有內容都是命令名稱。
  3. 將第一個空格後面的所有內容傳遞給該命令。在這種情況下,用戶名。該命令處理它自己的參數。

它看起來是這樣的:

$message = '/ban TimWolla'; 
if (substr($message, 0, 1) === '/') { 
    // $message is a command 
    $firstSpace = strpos($message, ' '); 
    $command = substr($message, 1, $firstSpace); 
    $parameters = substr($message, $firstSpace + 1); 

    if (!hasPermission($command)) error('Permission denied'); 

    switch ($command) { 
     case 'ban': 
      ban($parameters); 
     break; 
    } 
} 

在要使用正確的OOP情況下使每個指揮類,並使用一個接口的所有指令要求的正確方法。例如:

interface Command { 
    public function setParameters($parameters); 
    public function hasPermission(); 
    public function execute(); 
} 
+0

這就是我一直在尋找的,謝謝。 –

0

所有消息應發送到服務器。

也就是說,如果消息是「您好,歡迎使用該頻道」 - 這應該被解釋爲服務器上的MSG命令。

您應該有一個Command解析器服務器端來處理消息的類型。例如,如果MSG消息被傳遞,請將其發送到MessageParser。如果通過/命令將其發送到CommandParser

一個ban命令應該是形式:

/ban username 

在服務器端水平,你應該檢查該用戶試圖執行的命令是一個經營者,如果他/她,然後查找該用戶名的IP地址並將其添加到服務器上的黑名單中。

+0

你對他如何做到這一點似乎很有權威性。我不確定是否有辦法做到這一點 - 最終取決於他的決定。 – crush

+0

@crush - 他們是多種方式來做到這一點。我已經使用'ASP.NET MVC'實現了這樣一個系統,所以我只是根據我的經驗提供了一個答案。無論如何,OP都可以自由實施,但我試圖將它們指向正確的方向。 –