如果语句每次输出都相同,无论用户输入什么

时间:2015-10-15 10:43:46

标签: php mysql

我想回显数据库中的字段 IF 输入的其他两个字段与数据库中对应的字段是正确的。 例如

电子邮件:(输入电子邮件:(与数据库中的相同))

答案:(输入答案:(与数据库中的一封匹配电子邮件相同吗?))

Code Echos .... 您的密码在这里:(**********)。

无论我的代码输入如何,它总是返回消息'安全答案正确'但后来不回应变量。

PhP代码

$query = mysqli_query ($db, "SELECT * FROM admin where email = '$email' AND securitya = '$securitya'");

$password = mysqli_query ($db, "SELECT password FROM admin WHERE email = '$email' AND securitya = '$securitya'");
$passwordrow= mysqli_fetch_array ($password);
$result_password = $passwordrow ['password'];


$row = mysqli_fetch_array ($query);
if($row['email'] = $email AND $row['securitya'] = $securitya)
{

    $_SESSION['email'] = $row['securitya'];

    echo ("<SCRIPT LANGUAGE='JavaScript'>
    window.alert('Security Answer Correct');

    </SCRIPT>");
    echo ('<br>Password: ' . $result_password . '<br>');

}

else
{

die ("<SCRIPT LANGUAGE='JavaScript'>
    window.alert('Incorrect Security Answer, Please Try Again')
    window.location.href='passwordreset.php';
    </SCRIPT>");
} 

}

我收到错误消息:

Notice: Undefined variable: result_password in C:\xampp\htdocs\Intranet\passwordreset.php on line 118

我的陈述错误的是我想问的问题。 有人可以帮忙吗?

5 个答案:

答案 0 :(得分:2)

尝试使用此代码,我认为这是因为多个查询使用相同的对象。

$query = mysqli_query ($db, "SELECT * FROM admin where email = '$email' AND securitya = '$securitya'");

$row = mysqli_fetch_array ($query);
if($row['email'] == $email AND $row['securitya'] == $securitya)
{

    $_SESSION['email'] = $row['securitya'];

    echo ("<SCRIPT LANGUAGE='JavaScript'>
    window.alert('Security Answer Correct');

    </SCRIPT>");
    echo ('<br>Password: ' . $row['password'] . '<br>');

}

else
{

die ("<SCRIPT LANGUAGE='JavaScript'>
    window.alert('Incorrect Security Answer, Please Try Again')
    window.location.href='passwordreset.php';
    </SCRIPT>");
} 

}

答案 1 :(得分:1)

您正在设置下面一行中的值(这会触发if的误报),而不是比较它们。

if($row['email'] = $email AND $row['securitya'] = $securitya)

使用==进行比较:

if($row['email'] == $email AND $row['securitya'] == $securitya)

答案 2 :(得分:1)

您的查询可能失败,请使用可用的调试功能,在查询后添加or die(mysqli_error($db));以查看他们是否失败。

修改1

当您使用MySQLi时,您应该使用预准备语句来阻止SQL次注入。

修改2

您要分配值而不是比较值,请在==语句中使用=而不是if

编辑3

永远不要相信用户输入,您应该始终清理所有输入。查看htmlspecialcharsintvaltrim(不进行消毒,但可用于检查空字段)。

答案 3 :(得分:0)

你有一个额外的空格作为拼写错误。

替换此$result_password = $passwordrow ['password'];

有了这个 $result_password = $passwordrow['password'];

答案 4 :(得分:0)

替换

delete

if($row['email'] = $email AND $row['securitya'] = $securitya)