AJAX脚本是否会在PHP中保持会话?

Mar*_*ean 1 javascript php ajax session

我被要求开发一个社交网站以配合游戏.该游戏采用Flash(仅作为.swf文件提供),并将托管在社交网站上.

在测试和开发过程中出现的一个问题是会话超时.我知道会话长度可以(理论上)使用,php.ini但在这种情况下它似乎没有工作,很可能是由于我们的托管服务提供商的限制.

会话暂停,因为游戏在弹出窗口中打开,如果访问者长时间停留在游戏窗口,关闭窗口然后尝试使用社交网站,下一页加载会提示他们登录.

因此,如果我将一个小的JavaScript代码段放到我的页面的头部,只是触发对网站上托管的文件的请求,这会持续会话吗?如果是这样,这种做法有什么缺点吗?

Pau*_*nis 5

是的马丁这确实有效.Javascript可以访问PHP会话所使用的cookie.这意味着您在页面上执行session_start(); 如果AJAX页面向此页面发出请求,那么它们会与$ _SESSION进行交互,然后它们共享相同的cookie,因此它们共享相同的$ _SESSION.

第1页 - 接收AJAX请求的页面

session_start();
die(isset($_SESSION['myvar']) ? 'it exists' : 'it does not exist');
Run Code Online (Sandbox Code Playgroud)

第2页 - 制作AJAX请求的页面

session_start();
$_SESSION['myvar'] = 1;
Run Code Online (Sandbox Code Playgroud)

当您访问第2页时,会话启动并设置会话变量'myvar'.如果你从第2页到第1页发出了一个AJAX请求,那么第1页在会话中设置了变量'myvar',因此输出将是'它存在'.

希望这有助于揭开会议的神秘面纱.