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

PHP AJAX聊天-聊天命令逻辑?,php,Php,我一直在开发一个PHP ajax聊天。 现在我想添加像/ban之类的命令 但我不知道我该怎么做 首先,我希望命令以“/”符号开头 我必须先检查发送的邮件是否以“/”符号开头,对吗? 然后查看命令“ban”是否存在,但它如何知道,用户名将显示在句子中的什么位置 我真的很困惑,因为我不知道从哪里开始,如何开始。 是否有类似于我的需求的开源命令系统?您需要自己为命令定义语法。例如,禁令的/ban 首先检查消息是否以斜杠开头。如果是这样,那就是命令 现在搜索第一个空格,斜杠后面和空格前面的所有内容都是命

我一直在开发一个PHP ajax聊天。 现在我想添加像/ban之类的命令

但我不知道我该怎么做

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

我必须先检查发送的邮件是否以“/”符号开头,对吗? 然后查看命令“ban”是否存在,但它如何知道,用户名将显示在句子中的什么位置

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

您需要自己为命令定义语法。例如,禁令的
/ban

  • 首先检查消息是否以斜杠开头。如果是这样,那就是命令
  • 现在搜索第一个空格,斜杠后面和空格前面的所有内容都是命令名
  • 将第一个空格后的所有内容传递给命令。在本例中,输入用户名。该命令自行处理参数
  • 它可能是这样的:

    $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();
    }
    

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

    也就是说,如果消息是“您好,欢迎收看频道”-这应该被解释为服务器上的
    MSG
    命令

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

    ban
    命令应采用以下形式:

    /ban username
    

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

    如果你自己将命令定义为
    /ban user
    ,那么解析输入字符串就相当简单了。你正在开发系统,所以它的工作方式取决于你自己……我一生中从未做过这样的事情,我对如何做没有任何想法,Crush。因此,我需要一些关于如何处理它的解释、例子、来源和更多有用的东西。@JonyKale你是在要求我们设计你的系统吗?我不明白你的问题。你是在问其他聊天程序是如何处理的吗?不,伙计,我是在问关于如何构建这个的解释和建议。例如,用户编写了一个字符串,/ban username。我不知道如何确定/ban是命令,username是用户名。你似乎对他是如何做到这一点非常权威。我不确定有没有一种方法可以做到这一点——这最终取决于他的决定。@crush——有多种方法可以做到这一点。我自己用
    ASP.netmvc
    实现了这样一个系统,所以我只是根据我的经验提供一个答案。OP可以按照他/她希望的方式自由实施,我试图为他们指出正确的方向。