[英]What session functions have to be called before html tag
我听说必须在!DOCTYPE
之前调用session_start()
,但是我对其他会话函数感到困惑。 从手册中:
"To use a named session, call session_name() before calling session_start()."
因此,显然我必须在<!DOCTYPE html>
之前具有session_name()
函数,但是在html开始之前我还需要什么其他函数? 我很确定$_SESSION['']
在html里面还可以,但是我想澄清一下。
据我所知(假设您使用PHP进行编码),在开始编写响应正文之后,您将无法设置响应标头。
因此,在程序开始编写响应正文之前,必须设置与响应标头相关的任何内容(例如:响应正文中的html元素)。
我不知道在<!DOCTYPE>
之前必须调用哪些会话函数,但是我可以说$ _SESSION是一个超全局变量,这就是为什么您可以在脚本中的任何地方访问它。 它是一个数组。
必须始终先调用session_start()
函数,然后才能在文档中进行任何其他操作,并且$_SESSION
超全局变量可以在文档中的任何位置使用。 它基本上只是一个数据数组。
会话验证的基本示例:
if (isset($_SESSION['username']) === true) {
echo "Hello: ".$_SESSION['username'];
} else {
header('Location: http://www.yourdomainname.com/login.php');
}
实际上不需要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
?>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.