我听说session_start()
之前需要调用!DOCTYPE
,但我对其他会话功能感到困惑。从手册:
"To use a named session, call session_name() before calling session_start()."
所以,我显然必须在session_name()
之前使用<!DOCTYPE html>
函数,但在html开始之前还需要其他哪些函数?我非常确定html中的$_SESSION['']
是可以的,但我想澄清一下。
答案 0 :(得分:4)
据我所知(假设您使用PHP编码),在开始编写响应主体后,无法设置响应头。
因此,必须在程序开始编写响应主体之前设置与响应头相关的任何内容(例如:html元素,位于响应主体中)。
答案 1 :(得分:2)
我不知道在<!DOCTYPE>
之前必须调用哪些会话函数,但我可以说$ _SESSION是一个超全局变量,这就是为什么你可以在你的任何地方访问它脚本。这是一个数组。
答案 2 :(得分:2)
必须始终先在文档中的任何其他内容之前调用session_start()
函数,并且$_SESSION
超全局函数可以在文档中的任何位置使用。它基本上只是一个数据阵列。
会话验证的基本示例:
if (isset($_SESSION['username']) === true) {
echo "Hello: ".$_SESSION['username'];
} else {
header('Location: http://www.yourdomainname.com/login.php');
}
答案 3 :(得分:1)
实际上并不需要session_name()函数,因为PHP应该自动生成名称。
但是,您应该使用session_start()在所有脚本中启动会话。 这应该是您在任何想要使用会话功能的脚本中做的第一件事。像这样。
<?php
session_start();
?>
<!DOCTYPE html>
.... other html
<?php
if ( ! isset($_SESSION['is_logged_in']) || $_SESSION['is_logged_in'] === false ) {
// send user to login page
}
.. some other bits of php code
?>
.... other html
<?php
.. some other bits of php code
?>