-1

我目前正在编写一个 ajax 应用程序,它通过会话获取一些配置参数。

保存这些参数的 session['apps']['appXY'] 构建在 php-script 中,该脚本提供 js-links,调用 ajax。由于我不希望 session['apps']['appXY'] 消耗资源,当用户不使用 ajax-app 时,我每次都删除 session['apps'] 数组,用户定期调用任何站点/同步方式。

建站顺序如下:

  • session['apps'] 被删除;
  • 包括应用程序类
  • 在每个应用程序 (fe appXY) 中,如果需要 ajax,则构建 session['apps']['appXY'] (Step3)

  • 站点已构建,加载完成,用户正在调用一些 ajax 功能,这可能取决于 session['apps']['appXY']

现在的问题是,如果在站点构建过程开始时删除了 session['apps'],则会话数组 $session['apps']['appXY'] 在 ajax-script 中不可用现在,即使它在第 3 步(appXY 的常规 php 脚本)中被重建 - 并且已经存在且可用了。

如果我也没有删除 ajax 可用的会话,但我不明白,为什么会话在 ajax 应用程序中不可用,因为在重建之前删除它?什么可能导致这样的事实,在删除和重建会话之后,该会话在常规 php-script 中可用,但在 ajax 中不可用?

谢谢,杰登

4

1 回答 1

0

正如 Ninsuo 所建议的,我尝试通过更详细的模型使场景更清晰,其中包含一些代码:

在主类中,在包含任何模块(应用程序)之前,所有 ajax 会话都被删除:

function get-apps()
{
    unset($_SESSION['ajaxconf']);

    require_once(appXY.php);
    require_once(appABC.php);
}

然后,在类 'appXY.php' 中,会话 '$_SESSION['ajaxconf']['appXY']' 被(重新)填充:

class appXY extends base
{
    function main ( $localconf, $lang ) 
    {
        foreach ($array as $key => $value)
        $_SESSION['ajaxconf']['appXY'][$key] = $value;

        return '<a href="index.php?id=123&param1=234" onclick="ajax-app(234) return false;">click</a>
    }
}

从 '$_SESSION['ajaxconf']['appXY']' 获取值可以在 ajax 脚本中正常工作,该脚本由 javascript 函数 'ajax-app()' 调用,只要会话不是在 php 函数“get-apps()”的开头删除。如果会话被删除,它在 ajax 文件中不可用,即使它已在类“appXY”中再次重新定义,这在删除会话后显然包含在内。对我来说,这没有多大意义,因为会话在“appXY”类中可用。

于 2012-09-14T21:00:29.047 回答