PHP AJAX聊天-聊天命令逻辑


PHP AJAX chat - Chat commands logic?

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

但是我不确定我该怎么做。

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

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

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

您需要为您的命令定义语法您自己。例如,/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();
}

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

。e如果消息是"Hello, welcome to the channel"——这应该被解释为服务器上的MSG命令。

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

ban命令的格式应该是:

/ban username

在服务器端,您应该检查试图执行命令的用户是否为操作员,如果是,则查找用户名的IP地址并将其添加到服务器上的黑名单。