此代码仅供说明之用:
如果密码正确,我有这个代码,它输出电子邮件地址,密码和密码有效。
当我将$ inputpass更改为任何值时,例如xyz代码输出电子邮件地址和'Passoword is INVALID'应该是,但它不输出错误的passoword并给我以下内容:注意:未定义的变量:C:\ xampp \ htdocs \ login.php中的密码第36行
我无法理解的是,当密码不正确时,它并没有给我同样的信息。我不明白为什么passkey在不正确时没有被定义。
正如我之前提到的,代码仅用于说明目的 - 因此忽略范围,我知道可以使用MySQL完成。
<?php
$profile["joseph"] = array(
"email" => "joseph@gmail.com",
"pass" => "xeta",
);
$profile["mary"] = array(
"email" => "mary@yahoo.com",
"pass" => "byess",
);
$profile["mario"] = array(
"email" => "mario@yz.com",
"pass" => "bye",
);
$inputemail = "joseph@gmail.com";
$inputpass = "xeta";
//Check email vs username
foreach ($profile as $profilekey => $profileval) {
if ($profileval["email"] === $inputemail) {
$emailkey = $inputemail;
echo $emailkey;
}
}
//Check password vs username
foreach ($profile as $profilekey => $profileval) {
if ($profileval["pass"] === $inputpass){
$passkey = $inputpass;
echo $passkey;
}
}
if(($inputemail == $emailkey) AND ($inputpass == $passkey)){
echo "Password is valid";
}
else {
echo "Password is invalid";
}
?>
答案 0 :(得分:2)
尝试:
$passkey = '';
foreach ($profile as $profilekey => $profileval) {
if ($profileval["pass"] == $inputpass){
$passkey = $inputpass;
echo $passkey;
}
}
同样地:
$emailkey = '';
foreach ($profile as $profilekey => $profileval) {
if ($profileval["email"] == $inputemail) {
$emailkey = $inputemail;
echo $emailkey;
}
}
答案 1 :(得分:1)
因为只有在密码正确时才定义$passkey
,所以在if语句中包含:
if ($profileval["pass"] === $inputpass){
$passkey = $inputpass;
echo $passkey;
}
如果没有匹配,代码永远不会进入上面的if语句,并且永远不会定义$passkey
,所以当它到达这一点时:
if(($inputemail == $emailkey) AND ($inputpass == $passkey)){
echo "Password is valid";
}
else {
echo "Password is invalid";
}
$passkey
未定义。
所以你需要在代码中的某个地方定义$passkey
,可能是一个空字符串来开始。