使用 php 空文件名的多人游戏?

multiplayer games using php empty file name?

海伊

所以我想在php上做一个多人游戏,我采用了运行domly生成link的方法。

例如像 skribbl.io 游戏,按下“创建私人房间”后,会创建一个 运行dom link 供您的朋友加入:

skribbl.io/?random_string
like skribbl.io/?h4fwY8Ef

所以对我来说,他们似乎有一个没有名称的 php 文件,他们提供 运行dom 字符串作为参数。 但是我无法制作一个没有名字的 php 文件。

所以我选择的是,每次用户点击我的游戏的“创建私人比赛”时,php 脚本将复制包含服务器端工作的现有 php 脚本但将它命名为 random_string.php 就像 y4aHr329sJ.php 这样玩家会在 url 中写下: mygame.com/y4aHr329sJ (没有 .php 因为 apache .htaccess 规则)

但缺点是对于每个想要“创建私人房间”的人来说,我会在服务器上复制更多不必要的文件。

甚至认为我有一个脚本可以在游戏过期后删除所有过期的 random_string.php 文件(在一天的每个开始时,脚本都是 运行 并删除 1 天前的文件)

我仍然认为这会适得其反。

顺便说一句,我知道做类似 mygame.com/join?random_string 的事情,但我不是特别喜欢它。

我也不喜欢 apache .htaccess 自动将 mygame.com/random_string 变成 mygame.com/join?random_string 因为有些玩家喜欢从地址栏复制 link 而不是从“分享这个link”框。

另外,如果有 skribbl.io 在 skribbl.io/*?*random_string 中使用的没有问号的解决方案,我会更喜欢它。

您的帮助意义重大。 提前致谢!!

实际上,您在根文件夹中有一个 index.php 文件,但可以将 apache 配置为将其隐藏在 URL 中。

您可以通过将这些配置(在项目根目录或 vhost 配置中的 .htaccess 中)

并且您需要启用 mod_rewrite

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?/ [L]

如果您想保留 index.html,您可能需要创建如下路径: /rooms/random-room-name 并像这样处理房间:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/rooms/(.*)$ /index.php?room= [L]