【问题标题】:multiplayer games using php empty file name?多人游戏使用php空文件名?
【发布时间】:2023-03-21 22:08:01
【问题描述】:

所以我想在php上做一个多人游戏,我采用了随机生成链接的方法。

例如 skribbl.io 游戏,它会在按下“创建私人房间”后,创建一个随机链接让您的朋友加入:

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

所以对我来说,看起来他们有一个没有名称的 php 文件,他们提供随机字符串作为参数。 但我无法制作无名 php 文件。

所以我选择的是每次用户为我的游戏单击“创建私人匹配”时,一个 php 脚本将复制一个已经存在的包含服务器端工作的 php 脚本,但将其命名为 random_string.php,如 @987654322 @所以玩家会在网址中写下: mygame.com/y4aHr329sJ (由于 apache .htaccess 规则而没有 .php)

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

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

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

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

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

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

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

【问题讨论】:

  • 您考虑过使用数据库吗?
  • 您已经在使用 htaccess 来删除 .php。为什么不使用它将所有流量也发送到单个文件?
  • “看起来他们有一个没有名称的 php 文件” - 不。他们甚至可能没有使用 PHP。他们有一些服务器端代码响应该服务器上的根 HTTP 请求,并且该代码检查查询字符串的值。 “会复制更多不必要的文件” - 是的,没有理由这样做。通常,数据库中有数据,用户可以修改该数据,代码将使用该数据动态生成响应。
  • 我会检查一下 rjdown,我是 .htacces 中的菜鸟,所以我不知道它存在。
  • 好的,David 你说的是服务器端代码。这是 rjdown 建议的 .htaccess 方法吗??

标签: php multiplayer real-time-multiplayer


【解决方案1】:

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

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

您需要启用mod_rewrite

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

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

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

【讨论】:

  • 哦,好吧!我什至可以在 random_string 之前隐藏问号吗?
  • 是的,这段代码去掉它,如果你想保留它,把$1前面的斜线去掉就行了
  • 非常感谢!但现在我无法获取我拥有的 index.html 或一些 leaderboards.php,因为所有流量都流向了该单个 index.php 文件。
  • 那么怎么破例呢?
  • 通常,RewriteConf 在应用之前检查文件是否不存在。但是,如果你有一个 index.php 和一个 index.html 可能会很棘手,因为通常你应该只有一个索引文件。
猜你喜欢
  • 2011-10-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多