【问题标题】:How to work with Session and Include statement in PHP?如何在 PHP 中使用 Session 和 Include 语句?
【发布时间】:2009-05-29 21:43:21
【问题描述】:

我有许多包含多个文件的文件,如下所示,

File1 包含在 File2 中,然后 File2File3

现在我想从 File1 声明一个会话变量site_user_conutry,然后我检查 File2,如果会话变量中没有任何值,那么只有我包含 File1.php

我在每个 [年龄中都添加了session_start();,但仍然无法正常工作??

请告诉我如何使会话在上述条件下工作。

【问题讨论】:

    标签: php session logic


    【解决方案1】:

    在文件 2 中

    if ($_SESSION["site_user_country"] != null) 
    {
        include_once(File3);
    }
    

    【讨论】:

      【解决方案2】:

      在第一行代码中只执行一次 session_start。

      文档说: 从版本 4.4.3 开始,在会话已经启动时调用 session_start() 将导致 E_NOTICE 级别的错误。此外,第二个会话开始将简单地被忽略

      如果 file1 包含在 file2 中,则 file2 中的代码在 file1 之前完成。因此,如果您在 file1 中声明某些内容,则可能在 file2 中看不到(取决于代码...),无论如何这不是 php 编程的现代方式。 (参见 oo 和 __autoload)

      【讨论】:

        【解决方案3】:

        你是如何设置会话变量的?您应该尝试这样设置:

        $_SESSION['site_user_conutry'] = 'United-Kingdom';
        

        您是否将 session_start() 放置在文档的最顶部,或者至少在您输出任何信息之前?

        【讨论】:

        • 是的,我正在按照您的演示声明会话。我还在每个页面的顶部添加 session_start()。
        • 如果你使用 var_dump($_SESSION),你会得到什么?完全空了?
        【解决方案4】:

        假设您包含具有代码执行而非函数的文件。

        在第一次迭代中,包含 File1 并设置会话变量的代码必须在 File2 上的代码之前执行。

        在接下来的迭代中,会话将为您保存这些值。

        要设置会话变量,请使用 $_SESSION 全局数组。

        
        $_SESSION["name"] = "value";
        

        【讨论】:

          猜你喜欢
          • 2014-10-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-01-02
          • 2014-12-05
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多