为了账号安全,请及时绑定邮箱和手机立即绑定

是否可以在服务器上为所有连接使用一个静态变量?

是否可以在服务器上为所有连接使用一个静态变量?

PHP
慕码人2483693 2022-09-17 15:31:16
我正在创建一个回合制的中文跳棋游戏。在正文中,我添加了 onload 函数,该函数向服务器发送 ajax 请求以接收连接的玩家编号。但似乎响应总是返回相同的数字。我尝试使用 ,但没有使它工作。$GLOBALS我希望它是如何工作的:当我打开一个游戏的新窗口时,连接会得到下一个数字,简单的+1。JS代码位于主网页中,使用辛福尼。代码的一些片段:<body onload="getPlayerNum()">var playerNumber = 0;function getPlayerNum(){    $.ajax({        url: "http://localhost:8000/ajaxPlayer",        method: "POST",        data: {"playerNumber": playerNumber},        success: function(data) {            console.log(data);        }    });}/** * @Route("/ajaxPlayer") */public function ajaxPlayer(Request $request){    if ($request->isXmlHttpRequest()){        if (isset($GLOBALS["number"])){            $playerNumber = $GLOBALS["number"] + 1;            $GLOBALS["number"] = $playerNumber;        } else {            $playerNumber = 1;            $GLOBALS["number"] = $playerNumber;        }        return new Response($playerNumber);    }}
查看完整描述

1 回答

?
12345678_0001

TA贡献1802条经验 获得超5个赞

全局变量(如您在 中设置的变量)仅在浏览器请求 时执行的 PHP 脚本中是“全局”变量。PHP 不会在下次调用该脚本时自动记住它们。$GLOBALS["number"]http://localhost:8000/ajaxPlayer

如果您使用会话变量,例如 ,那么它将出现在您的浏览器在浏览会话期间请求的任何脚本中(默认情况下,这意味着直到您关闭浏览器)。$_SESSION["number"] = $playerNumber;

然而,我猜你打算让多个玩家从不同的电脑一起玩,你需要的不仅仅是:你需要一种在不同会话之间共享数据的方法。

最常见的方法是使用数据库。如果您正在Symfony中执行整个应用程序,那么您可能希望从阅读教义文档开始。


查看完整回答
反对 回复 2022-09-17
  • 1 回答
  • 0 关注
  • 93 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信