首次加载页面后如何避免发出警报

时间:2019-07-15 22:00:54

标签: php

我想检查表单是否正确填写,但是在加载页面后会出现警报。我想网站刷新正在提交登录按钮。

我尝试检查传入的数据,如果它们是错误的,它应该显示警报。

<?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>

如果我打开页面,警报将立即出现。我应该如何检查,警报在首次加载后没有出现。

2 个答案:

答案 0 :(得分:0)

IF语句很好,所以您的问题出在会话或缓存中。

如果关闭浏览器,则可以销毁Session,但这可能需要一些时间才能销毁Session,因此可以在浏览器设置中删除缓存,Cookie等。
但是您也可以在php中使用session_destroy();销毁POST或GET的所有变量。

答案 1 :(得分:0)

我不建议使用javascript作为解决方案,但是在这种情况下,javascript是最好的解决方案。

使用javascript,您可以中断表单提交过程-做一些事情(例如验证表单字段),然后return false(取消提交)或什么都不做(表单提交将继续)。但是,巴尔马(Barmar)对正在发生的事情的解释是直截了当的。 (他当然是:Barmar

所以概述是:

  1. 使用$('#yourFormID').submit(function(){})捕获表单提交过程

  2. 在该功能内,执​​行字段验证

  3. 如果字段验证失败,则显示一条消息并将控制权返回给用户

  4. 如果所有字段都可以通过验证,则无需执行其他操作-表单将像完全没有中断一样完成提交。

这是另一个问题/答案,演示了如何做到这一点。

How to direct a user directly to a form