我正在使用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的默认值为0.首先,我想检查step2是零还是什么。如果它为零,那么它应该重定向到“/ steptwo”页面。然后我想检查vpics然后激活。如果它们中的三个不是零那么主页。谁能帮我?
答案 0 :(得分:2)
您在标题声明之前返回false。
return false;
header ("Location: /");
应该是
header ("Location: /");
return false;
编辑刚刚意识到你的if语句都很糟糕。改变它们:
if($step2 == 0)
{
header("Location: /steptwo");
exit();
}
if($step2 != 0 && $vpic == 0)
{
header("Location: /idupload");
exit();
}
if($step2 != 0 && $vpic != 0 && $act == 0)
{
header("Location: /pending");
exit();
}
答案 1 :(得分:0)
if($step2 == 0){
header("Location: /steptwo");
}return true; exit();
这应该是
if($step2 == 0){
header("Location: /steptwo");
exit();
}
如果出口在if之外,那么if下方的行将永远不会被执行。