【发布时间】:2014-02-28 17:54:43
【问题描述】:
我正在开发 PHP 网站。我创建了一个函数来检查用户是否登录。如果用户已登录,那么它将触发数据库查询并检查将用户重定向到哪里。但它不能正常工作。我已经尝试通过更改 mysql db 中的值,但它不起作用并重定向到位置。
<?php
function Is_User_Logged_In()
{
require $_SERVER['DOCUMENT_ROOT'].'/configuration/configurationfile.php';
if(isset( $_SESSION['uname'], $_SESSION['email']))
{
$uname = @$_SESSION['uname'];
$email = @$_SESSION['email'];
if($result = $db->query("SELECT * FROM `users` WHERE BINARY `uname` = '$uname' AND `email` = '$email'"))
{
if($result and $result->num_rows)
{
$result = mysqli_fetch_array($result);
$step2 = $result['step2'];
$vpic = $result['vpics'];
$act = $result['active'];
if($step2 == 0)
{
header("Location: /steptwo");
}
return true;
exit();
if($step2 != 0 && $vpic == 0)
{
header("Location: /idupload");
}
return true;
if($step2 != 0 && $vpic != 0 && $act == 0)
{
header("Location: /pending");
}
return true;
}
}
return true;
}
return false;
header ("Location: /");
}
?>
这是我的职责。 step2、vpics 和 active in database 的默认值为 0。首先我想检查 step2 是否为零或什么。如果它为零,那么它应该重定向到“/steptwo”页面。然后我想检查 vpics 然后激活。如果其中三个不为零,则为主页。谁能帮我?
【问题讨论】:
-
重定向指令不应该在函数内部
-
return true; exit()是毫无意义的。 exit() 永远无法执行,因为返回调用在该点终止了函数。而且由于 return/exit 不在 if() 调用中,因此无论 if() 测试说什么,函数都会终止。 -
这些回报看起来不对
-
您能验证您的数据库调用是否返回任何内容吗?
-
好吧,首先..如果
$step2不等于0,由于return true和exit,您的函数什么也不做。只需执行print_r($step2)和print_r($vpic);即可查看输出结果