【问题标题】:PHP session_start(); isn't working when is initiated at the top of pagePHP session_start();在页面顶部启动时不起作用
【发布时间】:2014-05-12 17:27:40
【问题描述】:

我遇到了一个非常新奇的问题。

通常session_start(); 在每个页面的顶部启动,但在我的情况下,它仅在放置在包含的数据库连接文件下方时才起作用,例如,

<?php
include 'connection.php'; 
session_start(); 
?>

session_start();倒置时不起作用,

<?php
session_start();
include 'connection.php';     
?>

基本上这些值是在另一个文件的会话变量中启动和存储的,这些值应该打印在我遇到这个奇怪问题的页面上。

这个函数出现这种奇怪行为的可能原因是什么?

【问题讨论】:

  • 您是否使用需要访问数据库的自定义会话处理程序?或者您的“connection.php”是否设置了其他会话配置,例如 cookie 名称?
  • 做过调试吗?喜欢打开 display_errors/error_reporting 吗?
  • 向我们展示connection.php,我们或许可以提供帮助
  • connection.php 中是否包含一些会话处理功能?首次调用 session_start() 时,您是否收到文件或数据库访问错误?
  • ... 看起来就是这样。 (至少从 我们 可以看到。)

标签: php session session-variables


【解决方案1】:

如果包含的文件是会话处理程序,则会话应在会话处理程序下方启动。在以下代码中,connection.php 正在处理会话并创建与数据库的连接。因此,以下代码应正确启动会话。

<?php
include 'connection.php'; ///// is a session handler
session_start();          ///// shall serve the purpose.
?>

另一方面,当代码以相反的顺序放置时,会话不会启动,例如,

<?php
session_start();          ///// shan't serve the purpose.
include 'connection.php'; ///// is a session handler
?>

【讨论】:

    猜你喜欢
    • 2018-02-05
    • 2017-02-25
    • 1970-01-01
    • 2013-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-02
    • 1970-01-01
    相关资源
    最近更新 更多