所以我开始自己的网站,我的登录文件非常多。我只需要弄清楚将session_start放在哪里以保持用户登录。我在哪里放置session_start?我把它放在登录文件中吗?或者我把它放在哪里?
感谢您的帮助
答案 0 :(得分:8)
将它放在PHP开始标记之后 <?php
...就像这样
<?php
session_start();
//... your code....
//more code....
阅读PHP手册中有关会话的更多信息。 Here
注意:另请注意,如果您正在使用会话变量,则需要在每个页面上调用session_start();
。
答案 1 :(得分:3)
将它放在开始标记之后,否则标题将被发送,并且会话AFAIK必须是第一个发送的标题
<?php
session_start();
//session code here
?>
答案 2 :(得分:2)
在<?php
代码之后。
确保此功能前没有输出(即使是空格符号左右)。
答案 3 :(得分:2)
您希望在任何其他代码之前将session_start();
放在页面顶部。但是,如果您使用包含使您的生活更轻松,最好将它放在所有文件中包含的文件的最顶层。例如,当我创建一个网站时,我将所有标题代码和页脚代码放在单独的文件中,并将它们包含在其他文件中。我还有一个函数文件,包含在网站的每个其他页面中。所以对于我的索引文件,它可能看起来像这样:
<?php include_once("includes/header.php"); ?>
<div id="content">
Website Content
</div>
<? include_once("includes/footer.php"); ?>
然后,我的头文件将以:
开头<?php include_once("includes/functions.php"); ?>
<!doctype html>
<html>
<body>
然后在我的函数文件的顶部:
<?php session_start();
[functions]
?>
通过这种方式,函数文件的代码首先被运行,因此会话启动代码是第一个被击中的东西。为什么?在开始会话之前,您无法向浏览器输出任何类型的输出。
答案 4 :(得分:1)
最好拥有一个单独的文件而不是登录来做一些常见的事情。 我认为您的登录文件通常会处理用户验证和验证的事情。所以不要在每个页面上都包含该文件。
还有一个文件
此文件可以从 <?php session_start(); ?>
答案 5 :(得分:0)
session_start()
需要进入引用$_SESSION
的每个页面/文件(显然包含登录页面)。
因为你应该只调用一次,我倾向于编写一个lazy_session_start()
方法(并倾向于将它放在一个包含文件中):
/**
* Lazily calls session_start (to prevent warnings).
*/
function lazy_session_start() {
if (!isset($_SESSION) || !is_array($_SESSION)) {
session_start();
}
}
可以这样调用(在你需要使用$ _SESSION之前):
<?php
//you must either declare "lazy_session_start" function
//or import the file containing the function definition.
require_once('lazy_session_start.php'); //or something.
lazy_session_start();
//... you may now use the $_SESSION array.