我遇到了一个非常新奇的问题。
通常session_start();
是在每个页面的顶部启动的,但在我的情况下,它仅在将其放置在包含的数据库连接文件下方时才起作用,例如,
<?php
include 'connection.php';
session_start();
?>
session_start();
在反向放置时不起作用,
<?php
session_start();
include 'connection.php';
?>
基本上这些值是在另一个文件中的会话变量中启动和存储的,这些值应该打印在我遇到这个奇怪问题的页面上。
这个函数的奇怪行为背后可能是什么原因?
答案 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
?>