我试图创建一个可以检查登录字段并验证用户名和密码的php文件(login.php)。目前,它只是使用正则表达式检查用户名。以下是我的代码。我无法触发第二个else子句,似乎isset和!empty总是正确的,即使我可以看到它们在视觉上是空的,就像刷新页面后一样。
<?php
if (isset($_POST['login']) && !empty($_POST['login'])) {
if (preg_match('/^[a-z0-9]{6,15}$/i', $_POST['username'])) {
echo 'set';
}
else {
echo 'wrong';
}
} else {
echo 'required field';
}
?>
<div id="login"> <!-- Login field with link to registration -->
<form method="POST" action="login.php">
<Legend>Login</Legend>
Username <input type="text" name="username"/>
Password <input type="password" name="password"/>
<input type="submit" name="login">
<div id="register">
<a href="registration.html">Not a member? Click here to register!</a>
</div>
</form>
</div>
答案 0 :(得分:1)
我会建议更像这样的东西。首先,检查是否先设置$_POST['login']
,这样如果尚未点击提交按钮,则不会检查其他任何内容。然后在其中,验证是否已输入用户名和密码。如果他们有,继续,但你要验证它们。
if (isset($_POST['login'])) {
if (empty($_POST['username']) || empty($_POST['password'])) {
echo 'required field';
} else {
if (preg_match('/^[a-z0-9]{6,15}$/i', $_POST['username'])) {
echo 'set';
}
else {
echo 'wrong';
}
}
}
答案 1 :(得分:0)
试试这个。只需检查是否有任何POST请求,
if (!empty($_POST))
{
// Your code...
}