【问题标题】:Would an AJAX script persist a session in PHP?AJAX 脚本会在 PHP 中保持会话吗?
【发布时间】:2011-03-22 03:14:22
【问题描述】:

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

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

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

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

【问题讨论】:

  • 感谢您的回复,伙计们!

标签: php javascript ajax session


【解决方案1】:

是的,马丁这确实有效。 Javascript 可以访问与您的 PHP 会话相同的 cookie。这意味着在您的页面上执行 session_start();如果 AJAX 页面向该页面发出请求,则开启并开始与 $_SESSION 交互,则它们共享相同的 cookie,因此两者共享相同的 $_SESSION。

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

session_start();
die(isset($_SESSION['myvar']) ? 'it exists' : 'it does not exist');

第 2 页 - 发出 AJAX 请求的页面

session_start();
$_SESSION['myvar'] = 1;

当您访问第 2 页时,会话启动并设置会话变量“myvar”。如果您从第 2 页向第 1 页发出 AJAX 请求,则第 1 页在会话中设置了变量“myvar”,因此输出将是“它存在”。

希望这有助于为您揭开会议的神秘面纱。

【讨论】:

    【解决方案2】:

    如果请求的脚本调用 session_start(),那么会话 cookie 应该在每次请求时更新。乍一看,我不明白为什么它不起作用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-04-20
      • 2012-09-24
      • 1970-01-01
      • 1970-01-01
      • 2011-01-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多