2012-03-17 365 views
1

林与我的PHP会话问题varialbles 我的身份验证系统工作得很好我的XAMPP服务器上,而现在即时通讯有问题,因为我搬了BlueHost的PHP会话变量

正常,如果我打开喜欢的网页它的index.php检查,看看是否您登录时,如果您不向您发送到登录页面,但不工作 和只是为了测试我试图呼应$_SESSION['username'],现在变成了空白

我做了什么ALEX说,我得到这个错误: 无法修改标题信息 - 头已经发送(输出开始在/ home7/.. ./public_html/blog.php:4)在第22行

这里/home7/blogboua/public_html/blog.php是代码:

<?php session_start(); ?> 
<html> 
<head> 
<?php 
ini_set('display_errors', 'on'); 
error_reporting(E_ALL); 
/*-----Connect to Database-----*/ 
include ('connect_database_2.php'); 

//check if logged in 
function isLoggedIn() 
{ 
    if(isset($_SESSION['valid']) && $_SESSION['valid']) 
     return true; 
    return false; 
} 


//if the user has not logged in 
if(!isLoggedIn()) 
{ 
    header('Location: login_form.html'); 
    die(); 
} 

/* get username */ 
$username = $_SESSION['username']; 


/*-----Include Navigation------*/ 
include ('frame.html'); 

?> 

回答

2

在第2-3行发送<html><head>后,您正在尝试发送Location标头。你不能那样做。必须在发送任何输出之前发送标题。

我真的不知道你的代码如何在你的本地服务器上工作。

+1

他的代码在本地服务器上工作,因为它配置了输出缓冲。但我认为这是正确的答案。解决方案是将''移到'include('frame.html');'之前,或者更好地放在'frame.html'中。 – DaveRandom 2012-03-17 09:42:46

+0

谢谢你的工作! – user1107703 2012-03-17 09:44:44

1

设置只是你index.php<?php内.. 。

ini_set('display_errors', 'on'); 
error_reporting(E_ALL); 

然后重新装入index.php(以前空白页)。

它会告诉你错误的原因。可能的是,它不能将会话数据写入/tmp/

+0

好的我得到了一个错误,即时通讯gona编辑我的文章 – user1107703 2012-03-17 09:33:42

1

如果您使用的是像bluehost这样的共享服务提供程序,那么您需要小心对会话持续性的假设,因为这些托管提供程序将垃圾收集/清除旧用户/ tmp文件。国际海事组织,避免这种情况的最简单方法是声明一个显式的会话处理程序并将您的会话上下文存储在MySQL D/B中。有关如何执行此操作的示例,请参阅PHP session_save_handle讨论。

+0

我改变了session.save_path到我自己的文件夹 – user1107703 2012-03-17 09:41:28

+0

“我改变了session.save_path到我自己的文件夹” - 并添加了.htaccess访问规则来阻止他们可以通过URI,我希望:) – TerryE 2012-03-17 18:26:19