2011-10-04 38 views
0

我遇到问题,我的会话变量未被设置/保存。会话变量未设置在标头重定向

这里是我的代码:

index.php文件有:

<? //this is first line of page 
session_start(); 
?> 
<form action="admin_process_login.php" method="post"> 
<p>EMAIL</p><input name="email" type="text"> 
<p>PASSWORD</p><input name="password" type="password" /> 
<input type="submit" value="Enter"> 
</form> 

admin_process_login.php

<? //this is first line of page 
session_start(); 
$useremail = $_POST['email']; 
$postpassword = $_POST['password']; 
include('admin_config.php'); 

if ($postpassword != "" && $useremail != "") { 
//Connect to database 
mysql_connect("localhost", $dbusr, $dbpass) or die(mysql_error()); 
mysql_select_db("studioel_dental") or die(mysql_error()); 

//Look for a matching email/password 
$query = "SELECT * 
    FROM users 
    WHERE users.email = '$useremail' 
    AND users.password = '$postpassword'"; 

$result = mysql_query($query) or die(mysql_error()); 
$row = mysql_fetch_array($result); 

if(mysql_num_rows($result)==0){ 
    header("Location: http://www.dentalbenefitprogram.com/admin.php?error=nomatch"); 
    } else { 
    //set session variables and load supplies page 
     $uid = $row['id']; 
     $unamex = $row['name']; 
     $uemailx = $row['email']; 
     $utypex = $row['type']; 

     $_SESSION['userid']=$uid; 
     $_SESSION['uname']=$unamex; 
     $_SESSION['uemail']=$uemailx; 
     $_SESSION['utype']=$utypex; 

     header("Location: http://www.dentalbenefitprogram.com/admin_groups.php"); 
     exit; 
     }; 
} else { 
//email or password fields were blank. Return to login page 
header("Location: http://www.dentalbenefitprogram.com/admin.php?error=blank"); 
}; 
?> 

你可能已经猜到:会话变量没有被设置.. 。

任何帮助都很赞赏!

+0

这正常工作,请创建一个测试脚本添加ob_end_flush();只初始化会话,设置会话变量并执行重定向。测试它是否工作(如果不起作用),如果它不起作用,请在此处替换您的代码,因为它包含的内容远多于您所问的内容。如果有效,请更改您的问题。 – hakre

+0

糟糕。我是个白痴。 让我撤回我的问题。谢谢你帮忙找到它,Hakre。 我从数据库中得到结果后忘了做一个while循环。 对不起(感觉羞怯)。 –

回答

1

布莱恩:

我的猜测是,在第一行的评论之前,你必须是造成这一问题的空间。

PHP手册提醒用户需要注意的是:

注: 要使用基于cookie的会话,在session_start()必须outputing什么浏览器之前调用。

此外,您可能需要考虑使用长标签而不是短标签。

最佳

0

使用ob_start();在我们的代码的极端开始 &不要忘记在我们的代码的最末端