Session_start() 定义常量后
Session_start() after defining a constant
在每一页上(第一行,第一行代码)我有这两行代码:
define("DIRECT_ACCESS", true);
defined("DIRECT_ACCESS") OR die(header("Location: https://website.com/"));
在那两行代码之后,我总是做 session_start();,我读到 session_start() 应该作为第一件事,在任何事情之前。 Session_status() 显示会话处于活动状态并且工作正常,所以我有几个问题:
1.如果它应该是第一行,在其他代码之前,为什么会话有效?
2。如果我不把 session_start() 作为第一行代码,会不会有什么危险的事情发生?
感谢您花时间帮助我。
I read that session_start()
should come as a first thing, before anything.
这种说法基本上是错误的。
初始化 sessions 时需要考虑一些事项:
使用默认(推荐)设置,session ID 通过 cookie 传输。 Server-side cookie 是通过 HTTP headers 设置的。需要在响应 body 之前发送 HTTP headers。因此,您需要避免这样的结构:
echo 'Hello, World!';
session_start();
您不能使用 session 从永久存储中检索数据之前的数据。这正是 session_start()
所做的。所以你不能这样做:
$user_name = $_SESSION['user_name'];
session_start();
有时您可能想关闭 session 以解锁存储。你用 session_write_close()
来做到这一点。执行此操作后,session 数据仍处于加载状态,但更改不会持续存在。所以请避免:
session_write_close();
$_SESSION['user_name'] = 'john.doe';
除此之外,您可以随时开始 sessions。
在每一页上(第一行,第一行代码)我有这两行代码:
define("DIRECT_ACCESS", true);
defined("DIRECT_ACCESS") OR die(header("Location: https://website.com/"));
在那两行代码之后,我总是做 session_start();,我读到 session_start() 应该作为第一件事,在任何事情之前。 Session_status() 显示会话处于活动状态并且工作正常,所以我有几个问题:
1.如果它应该是第一行,在其他代码之前,为什么会话有效?
2。如果我不把 session_start() 作为第一行代码,会不会有什么危险的事情发生?
感谢您花时间帮助我。
I read that
session_start()
should come as a first thing, before anything.
这种说法基本上是错误的。
初始化 sessions 时需要考虑一些事项:
使用默认(推荐)设置,session ID 通过 cookie 传输。 Server-side cookie 是通过 HTTP headers 设置的。需要在响应 body 之前发送 HTTP headers。因此,您需要避免这样的结构:
echo 'Hello, World!'; session_start();
您不能使用 session 从永久存储中检索数据之前的数据。这正是
session_start()
所做的。所以你不能这样做:$user_name = $_SESSION['user_name']; session_start();
有时您可能想关闭 session 以解锁存储。你用
session_write_close()
来做到这一点。执行此操作后,session 数据仍处于加载状态,但更改不会持续存在。所以请避免:session_write_close(); $_SESSION['user_name'] = 'john.doe';
除此之外,您可以随时开始 sessions。