我在哪里放一个SESSION_START?

时间:2013-12-01 03:42:57

标签: php session login

所以我开始自己的网站,我的登录文件非常多。我只需要弄清楚将session_start放在哪里以保持用户登录。我在哪里放置session_start?我把它放在登录文件中吗?或者我把它放在哪里?

感谢您的帮助

6 个答案:

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