为什么没有设置此会话?

时间:2013-11-03 21:49:04

标签: php function session

尝试用会话做一些简单的事情。

我刚刚开始扩展我的网站,所以开始使用每个页面上包含的功能文件。

我正在尝试使一个页面只有在您登录时才可访问,如果不是,它会重定向您,然后设置会话。检测到此会话并显示“登录”消息。

我之前有过这段代码,但由于我搞乱了事情,因此无法正常工作。

因此,在需要检查登录用户的页面上,这位于页面顶部:

<?php 
session_start();
require 'functions/core-functions.php';
isUserLoggedIn_referLogin();
?>

这是功能:

// User Logged In Check For Protected Pages - Promt Login

function isUserLoggedIn_referLogin() {

if(!isset($_SESSION['user'])) {
    $_SESSION['needlogin'] = "1";
    header('location: ' .$_SERVER['HTTP_REFERER']);
}

}

这用于显示erorr:

if (isset($_SESSION['needlogin'])) {
    echo '
    <div class="invalidlogin">Please login to use this feature.</div>';
    unset($_SESSION['needlogin']);
}

我已检查过firebug,但显示没有设置会话。

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

您需要调用session_write_close

答案 1 :(得分:0)

如果Gavin的回答无法解决您的问题,请确保在将任何内容发送到浏览器之前调用session_start()。除了http://php.net/manual/en/function.session-start.php

之外,这是一个
  

要使用基于cookie的会话,必须先调用session_start()   向浏览器输出任何内容。