标题与session_start结合使用不起作用?

时间:2015-06-03 19:42:01

标签: php

为避免非法使用,请检查代码开头的登录状态。我这样做如下:

if (!isset($_SESSION['loggedin'])){
  header('Location:http://www.name.nl/prg/login.php');
  exit();
} 

这很有效。但是,如果我首先使用此代码它不起作用。

ini_set('session.save_path',realpath(dirname($_SERVER['DOCUMENT_ROOT'])).'/name.nl/tmp');
session_start();
if (!isset($_SESSION['loggedin'])){
  header('Location:http://www.name.nl/prg/login.php');
  exit();
} 

我错过了什么吗?我现在找了2天,但找不到理由/解决方案。在我看来,头函数应该在ini_set和session_start之后工作。我的意思是它是通用代码?

2 个答案:

答案 0 :(得分:1)

首先尝试:ini_set('session.save_path',realpath(dirname($ _ SERVER ['DOCUMENT_ROOT'])。'/ name.nl/tmp'));

(移动括号)

尝试查看此处:http://php.net/manual/en/function.session-save-path.php

不确定这是否有帮助,但它似乎与您的会话文件夹所在位置有关,然后指向代码中正确的目录/文件夹。

适用于他们的解决方案: ini_set('session.save_path',realpath(dirname($ _ SERVER ['DOCUMENT_ROOT'])。'/。/ session'));

您当前的会话保存:

的ini_set( '的session.save_path',真实路径(目录名($ _ SERVER [ 'DOCUMENT_ROOT'])) '/ name.nl/tmp');

答案 1 :(得分:0)

我找到了原因。我有一个" echo语句"在标题声明之前。删除此声明后,它可以正常工作。 谢谢你的评论!