我想检查表单是否正确填写,但是在加载页面后会出现警报。我想网站刷新正在提交登录按钮。
我尝试检查传入的数据,如果它们是错误的,它应该显示警报。
<?php
$alert = false;
if (isset($_POST['login'])){
if ($_POST['username'] == null || $_POST['password'] == null){
$alert = true;
}
$username = $_POST['username'];
$password = $_POST['password'];
$hash = [HASH];
if ($username == '[USERNAME]' && password_verify($password, $hash)){
header([LOCATION]);
}
}
?>
...
<?php
if ($alert){
[ALERT]
}
?>
<form method="POST" action="">
<input type="text" name="username"/>
<input type="password" name="password"/>
<button type="submit" name="login">Login</button>
</form>
如果我打开页面,警报将立即出现。我应该如何检查,警报在首次加载后没有出现。
答案 0 :(得分:0)
IF语句很好,所以您的问题出在会话或缓存中。
如果关闭浏览器,则可以销毁Session,但这可能需要一些时间才能销毁Session,因此可以在浏览器设置中删除缓存,Cookie等。
但是您也可以在php中使用session_destroy();
销毁POST或GET的所有变量。
答案 1 :(得分:0)
我不建议使用javascript作为解决方案,但是在这种情况下,javascript是最好的解决方案。
使用javascript,您可以中断表单提交过程-做一些事情(例如验证表单字段),然后return false
(取消提交)或什么都不做(表单提交将继续)。但是,巴尔马(Barmar)对正在发生的事情的解释是直截了当的。 (他当然是:Barmar)
所以概述是:
使用$('#yourFormID').submit(function(){})
捕获表单提交过程
在该功能内,执行字段验证
如果字段验证失败,则显示一条消息并将控制权返回给用户
如果所有字段都可以通过验证,则无需执行其他操作-表单将像完全没有中断一样完成提交。
这是另一个问题/答案,演示了如何做到这一点。