在html标记之前必须调用哪些会话函数

时间:2014-05-28 22:26:51

标签: php html session doctype

我听说session_start()之前需要调用!DOCTYPE,但我对其他会话功能感到困惑。从手册:

"To use a named session, call session_name() before calling session_start()."

所以,我显然必须在session_name()之前使用<!DOCTYPE html>函数,但在html开始之前还需要其他哪些函数?我非常确定html中的$_SESSION['']是可以的,但我想澄清一下。

4 个答案:

答案 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
?>