2012-11-01 32 views
-1

这真是令人困惑。我有两个页面,A & B.两者都使用下面的代码:Cookie未被设置,但其余代码正在执行?

$row = mysqli_fetch_array($data); 
    $_SESSION['user_id'] = $row['user_id']; 
    $_SESSION['username'] = $row['username']; 
    setcookie('user_id', $row['user_id'], time() + (60 * 60 * 24 * 30)); // expires in 30 days 
     setcookie('username', $row['username'], time() + (60 * 60 * 24 * 30)); // expires in 30 days 
     $home_url = 'http://' . $_SERVER['HTTP_HOST'] . dirname($_SERVER['PHP_SELF']) . '/main.php'; 
     header('Location: ' . $home_url); 

A将标题的设置(您轻松删除)后执行的代码,然后设置标题; B将在设置标题后执行代码并且不设置标题。

我已经检出了NUMEROUS个答案,并且没有空白,main.php文件设置为正常,A & B文件看起来完全相同,但是在IF语句被删除之前有不同的内容。

没有错误出现;重定向(它应该有标题设置并作出相应的反应,就好像你在B上注销了一样(因此没有标题活动),而在A上它按预期出现)

设置cookie的两个代码块(都在IF声明中)是IF语句是不同的,根据代码出现之前的代码

什么(如果有的话)的东西我应该注意的代码之间的区别A & B ?

(PS:我也知道头文件没有被设置,因为会话没有启动,通过在代码末尾放置一个IF $ _SESSION ...

+0

你需要使用session_start();见http://www.tizag.com/phpT/phpsessions.php –

回答

1
session_start(); 
$row = mysqli_fetch_array($data); 
$_SESSION['user_id'] = $row['user_id']; 
$_SESSION['username'] = $row['username']; 
setcookie('user_id', $row['user_id'], time() + (60 * 60 * 24 * 30)); // expires in 30 days 
setcookie('username', $row['username'], time() + (60 * 60 * 24 * 30)); // expires in 30 days 
$home_url = 'http://' . $_SERVER['HTTP_HOST'] . dirname($_SERVER['PHP_SELF']) . '/main.php'; 
header('Location: ' . $home_url); 
exit; 

+0

感谢您的答案;移动session_start()让我注意到上面的代码定义了一个if语句,该语句立即结束,从而关闭它内部的所有代码.....虽然一些执行的事实仍然没有回避.... –