PHP AJAX聊天 - 聊天命令逻辑?

时间:2013-06-20 14:43:54

标签: php

我一直在开发PHP ajax聊天。 我现在想添加/ ban等命令。

但我不确定我该怎么做。

首先,我希望命令以“/”符号开头。

我是否必须首先检查发送的消息是否以“/”符号开头,是否正确? 然后查看命令'ban'是否存在,但它如何知道,句子中的用户名将显示在哪里?

我真的很困惑,因为我不知道在哪里以及如何开始。 是否有类似于我的需求的开源命令系统?

2 个答案:

答案 0 :(得分:2)

您需要定义命令的语法您自己。例如/ban <username>禁令。

  1. 首先检查消息是否以斜杠开头。如果是这样,那就是命令。
  2. 现在搜索第一个空格,斜杠后面和空格前面的所有内容都是命令名称。
  3. 将第一个空格后的所有内容传递给命令。在这种情况下,用户名。该命令自己处理参数。
  4. 看起来像这样:

    $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,请使每个命令成为一个类,并使用所有命令的接口来要求正确的方法。 e.g:

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

答案 1 :(得分:0)

所有消息都应发送到服务器。

即如果消息为“Hello,欢迎加入频道” - 这应该被解释为服务器上的MSG命令。

您应该有一个Command解析器服务器端来处理消息类型。例如,如果传递了MSG消息,请将其发送到MessageParser。如果传递/命令,请将其发送到CommandParser

ban命令的格式应为:

/ban username

在服务器端级别,您应该检查尝试执行该命令的用户是否为运营商,如果他/她正在查找用户名的IP地址并将其添加到服务器上的黑名单中。