【问题标题】:Validate form before submit in php with the routes使用路由在 php 中提交之前验证表单
【发布时间】:2021-05-20 16:52:19
【问题描述】:

我必须在提交之前验证表单,在这段代码中我使用路由,所以我不能使用 $_SERVER["PHP_SELF"](也许)有人可以帮助我吗?

<form name="user" action="index.php?action=save-report" method="post">
   <div class="form-group">
     <label for="report">Quante persone ci sono secondo te? </label>
     <br>
     <input type="number" id="report" name="report"  maxlength="180"  style="width: 5%" class="form-control" required >
   </div>
   <br>

   <button class="btn btn-primary">Invia</button>
   <input type="hidden" id="user__token" name="user[_token]" value="">
   <br>
</form>

谢谢

【问题讨论】:

  • 欢迎来到 StackOverflow!您能否详细说明“我使用路由,所以我不能使用超全局变量”是什么意思?
  • @ArSeN 在表单的操作中我重定向到路由文件,但我想发送一条消息(例如,如果用户写错了)而不刷新页面
  • 提交前验证?使用 jquery 或 javascript 我相信堆栈周围有很多解决方案

标签: php html forms validation routes


【解决方案1】:

不刷新验证最好的方式是Javascript,只需在输入中加一个onchange属性,通过js验证即可。

<input type="text" onchange="validate(this)" required>
<input type="submit" id="submit" value="Invia">

function validate(elem) {
   if (elem.value != "Ciao") {
      elem.classList.add("notValid"); //for example red border or red label...
      document.getElementById("submit").disabled = true;
   else {
      elem.classList.remove("notValid");
      document.getElementById("submit").disabled = false;
   }
}

【讨论】:

    【解决方案2】:

    既然您已经使用 html5,请查看 html5 form validation: 大多数现代浏览器会在将您的输入发布到您的服务器之前验证您的输入,而无需使用 javascript。

    即如果您希望您的输入允许最少 1 人和最多 180 人进入,您可以使用:

    <input type="number" id="report" name="report" min="1" max="180"  style="width: 5%" class="form-control" required >
    

    查看min 和max 属性的说明。

    【讨论】:

      猜你喜欢
      • 2016-12-30
      • 2014-09-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多