我想回显数据库中的字段 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
我的陈述错误的是我想问的问题。 有人可以帮忙吗?
答案 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
永远不要相信用户输入,您应该始终清理所有输入。查看htmlspecialchars
,intval
,trim
(不进行消毒,但可用于检查空字段)。
答案 3 :(得分:0)
你有一个额外的空格作为拼写错误。
替换此$result_password = $passwordrow ['password'];
有了这个
$result_password = $passwordrow['password'];
答案 4 :(得分:0)
替换
delete
与
if($row['email'] = $email AND $row['securitya'] = $securitya)