我正在做功课,包括对php上的用户名和密码进行基本验证。我有一个一维的关联数组。当条件为真时,我可以打印该值,但是我不能仅打印一个“ else”,因为“ if”在foreach中
php的内容:
SELECT u2.fkPropertyID, u2.pkUnitId, u2.UnitCode,
u2.fkUnitViewID,u2.fkFloorPlanID, u2.fkCalendarTypeID
FROM dbo.tblUnit u
left join dbo.tblUnitGroup ug ON ug.fkUnitLogicalID = u.pkUnitID
left JOIN dbo.tblUnit u2 on ((u2.fkUnitGroupID = u.pkUnitID and
u.ynPhyUnit = 0)
or
(u2.pkUnitID = u.pkUnitID and u2.ynPhyUnit =1))
or
(u2.pkUnitId = ug.fkUnitPhisicallID and u2.ynPhyUnit = 1)
where u.pkUnitId = 3806
答案 0 :(得分:1)
此答案专门说明了如何检查“任何”真值。在检查单个匹配索引并以此索引的情况下,Nigel Ren's answer更实用。
使用一个标志检查是否有任何匹配,如果foreach
之后没有匹配,则拒绝:
$user = $_POST['user'];
$pass = $_POST['pass'];
$success = False;
foreach ($login as $clave => $valor)
{
if ($user == $clave && $pass == $valor) {
$success = True;
echo "Hola " . $user . ", bienvenido a la aplicación";
}
}
if (!$success) {
echo "Usuario y/o contraseña incorrectos";
}
答案 1 :(得分:1)
根本不需要循环,您所要做的就是检查是否存在带有用户名的数组条目(使用isset()
),并且该条目具有相同的密码... < / p>
$user = $_POST['user'];
$pass = $_POST['pass'];
if (isset($login[$user]) && $pass == $login[$user]) {
echo "Hola " . $user . ", bienvenido a la aplicación";
}
else {
echo "Usuario y/o contraseña incorrectos";
}