Php 包含会话超时不工作的文件

Php 包含会话超时不工作的文件,php,Php,expired.php包含与我的//检查会话超时相同的编码,如有任何帮助,将不胜感激。谢谢 已编辑以包含my database.php 保持 在每个页面的顶部,然后不要在页面内使用它或包含页面 如果您仍然希望在页面中使用session_start(),请如下使用: session_start(); require("database.php"); if(empty($_SESSION['user'])) { header("Location: login.php"); d

expired.php包含与我的//检查会话超时相同的编码,如有任何帮助,将不胜感激。谢谢

已编辑以包含my database.php

保持

在每个页面的顶部,然后不要在页面内使用它或包含页面

如果您仍然希望在页面中使用session_start(),请如下使用:

session_start();
require("database.php");

if(empty($_SESSION['user']))
{
    header("Location: login.php");

    die("Redirecting to login.php");
}

require("expired.php");

您可以告诉php.ini抛出哪种类型的错误,搜索“错误报告”并读取规则。警告不会停止代码的执行。

您的第一个示例(示例1)和第二个示例(示例2)不会获得相同的效果,因为代码顺序不同

示例1和示例3的代码顺序相同,因此应该导致相同的行为

当然,你可以争论session_start()(把它放在哪里等),但这不是你真正的问题

示例1:

if(!session_start()){
    session_start();
}
require("database.php");

if(empty($_SESSION['user']))
{
    header("Location: login.php");

    die("Redirecting to login.php");
}

//check session timeout
$now = time();


$limit = $now - 60 * 1;

if (isset ($_SESSION['last_activity']) && $_SESSION['last_activity'] < $limit)
{
  $_SESSION = array();
  header('Location: login.php');
  exit;
} 
else {

  $_SESSION['last_activity'] = $now;
 }
require("database.php");
require("expired.php");

if(empty($_SESSION['user']))
{
    header("Location: login.php");

    die("Redirecting to login.php");
}
示例3:

if(!session_start()){
    session_start();
}
require("database.php");

if(empty($_SESSION['user']))
{
    header("Location: login.php");

    die("Redirecting to login.php");
}

//check session timeout
$now = time();


$limit = $now - 60 * 1;

if (isset ($_SESSION['last_activity']) && $_SESSION['last_activity'] < $limit)
{
  $_SESSION = array();
  header('Location: login.php');
  exit;
} 
else {

  $_SESSION['last_activity'] = $now;
 }
require("database.php");
require("expired.php");

if(empty($_SESSION['user']))
{
    header("Location: login.php");

    die("Redirecting to login.php");
}

如果会话未启动,则
$\u会话
不应存在。顺便说一下,
session\u start()
成功时返回
TRUE
,失败时返回
FALSE

记住这一点,你应该这样写:

session_start();
require("database.php");

if(empty($_SESSION['user']))
{
    header("Location: login.php");

    die("Redirecting to login.php");
}

require("expired.php");

然后,您可以在需要的地方包含此部分。

是否在每个页面上调用
session\u start()
?require(“database.php”)包含我的数据库信息,并在页面末尾调用session start,如下所示。如果(!isset($_SESSION)){SESSION_start();}@SalehinSuhaimi-SESSION_start()应该位于php脚本的顶部(我将跳过isset()-部分)。只需在database.phpand顶部设置一个session_start(),您可能不需要为
session_start
设置if,如果我错了,请纠正我,但我的想法是这样的。在每个页面上,我都需要访问数据库,因此我将在每个页面的顶部调用database.php。在页面末尾,如果会话尚未设置,它将启动会话。从技术上讲,这与在每页的顶部开始会话是一样的。我需要isset函数,因为我在1 index.php中包含了2-3文件,所以它将在…中给我一个忽略会话_start()。。。。我还在学习,对不起。你是说如果(!session_start())?