在我的IF声明中没有满足的条件
问题描述:
我有以下代码,它允许成员恢复其密码。但是我无法发现所犯的错误,并且我的条件没有得到满足。当你访问recover.php时,你被重定向到index.php,所以最后一个else语句正在执行(这应该只发生在用户登录时 - 意味着如果他们登录,他们不能恢复密码)。在我的IF声明中没有满足的条件
<?php
include 'storescripts/init.php';
$msg = "";
if(isset($_GET['success']) === true && empty($_GET['success']) === true)
{
$msg = "Thanks, we've emailed you.";
}
else
{
$mode_allowed = array('mem_password');
if (isset($_GET['mode']) === true && in_array($_GET['mode'], $mode_allowed) === true)
{
if(isset($_POST['mem_email']) === true && empty($_POST['mem_email']) === false)
{
if (email_exists($_POST['mem_email']) === true)
{
recover($_GET['mode'], $_POST['mem_email']);
header('Location: recover.php?success');
exit();
}
else
{
$msg = "<p>Oops, we couldn\'t find that email in the system</p>";
}
}
}
else
{
header('Location: index.php');
exit();
}
}
logged_in_redirect();
include 'includes/overall/head.php';
include 'includes/overall/template_header.php';
?>
<div id="mainDivShort">
<h1>Recover</h1>
<div id="divBreak"></div>
<?php include ("includes/overall/column_left.php");?>
<div id="middleContent">
<?php echo $msg; ?>
<form action="" method="post">
<ul>
<li>Please enter your email address:<br> <input type="text" name="mem_email"></li>
<li><input type="submit" value="Recover"></li>
</ul>
</form>
</div>
<?php include ("includes/overall/column_right.php");?>
</div>
<?php include ("includes/overall/template_footer.php");?>
当我在退出时访问recover.php时,我无法确定执行最后一个else语句时出现了什么情况。
答
首先:
这是行不通的:
if(isset($_GET['success']) === true && empty($_GET['success']) === true)
它应该是:
if(isset($_GET['success']) === true && empty($_GET['success']) === false)
而且
header('Location: recover.php?success');
应该是(别人$ _GET ['success']不会被设置):
header('Location: recover.php?success=1');
和:
<form action="" method="post">
应该是:
<form action="recover.php?mode=mem_password" method="post">
对于剩下的,你的代码是正确的。
'$ _GET ['mode']'是否在URL中传递? 'recover.php?mode = mem_password' – 2013-03-01 17:02:52
这不是你的错误,但你不需要对'true'进行明确的比较。只需使用'if(isset($ foo)&&!empty($ foo)')' – scones 2013-03-01 17:03:39
nope。我从index.php链接到recover.php?mode = password,一旦链接被点击,我被重定向回index.php – jhetheringt7 2013-03-01 17:05:18