PHP session_start();在页面顶部启动时不起作用

时间:2014-05-12 17:27:41

标签: php session session-variables

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

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

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

session_start();在反向放置时不起作用,

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

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

这个函数的奇怪行为背后可能是什么原因?

1 个答案:

答案 0 :(得分:0)

如果包含的文件是会话处理程序,则应在会话处理程序下面启动会话。在以下代码中,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
?>