【问题标题】:Validating if a POST value is either an email or 8-digit number in PHP验证 POST 值是电子邮件还是 PHP 中的 8 位数字
【发布时间】:2017-03-25 18:20:01
【问题描述】:

我一直在尝试在 PHP 中实现对 POST 值的服务器端验证 - 该值应该是有效的电子邮件地址或 8 位数字。

到目前为止我得到的是:

<?php

 $username = $_POST["username"];

 if (!filter_var($username, FILTER_VALIDATE_EMAIL) || second-condition-about-8-digit-number-here) {

 header("Location: ../login-error/?&sessionid=$hash&securessl=true");
 die();

 }

?>

我想要一些关于如何实施的指导。输入值应该是电子邮件地址或 8 位数字。

【问题讨论】:

  • 提示:使用preg_match
  • 另一个提示:使用\d{8}作为8位数字
  • 为什么不在客户端发回服务器之前进行验证?
  • @Edward 在客户端验证它是有帮助的,但最终它确实需要在服务器端验证。
  • @Edward 不信任客户端验证。它可以简单地打破

标签: php validation email post numbers


【解决方案1】:
<?php
$username = $_POST["username"];

if (!filter_var($username, FILTER_VALIDATE_EMAIL) || !preg_match('/^[0-9]{8}$/', $username)) {
    header("Location: ../login-error/?&sessionid=$hash&securessl=true");
    die();
}

?>

【讨论】:

    【解决方案2】:

    您需要使用strlen 来获取字符串的长度。

    由于您只关心数字,因此您可以使用这种方法..

    $length = strlen(preg_replace("/[^0-9]/", '', $username));
    

    这会将$length 设置为字符串$username 中存在的数字字符数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-03-03
      • 2021-02-15
      • 2011-09-25
      • 2017-03-19
      • 2012-10-04
      • 1970-01-01
      • 2017-10-12
      • 1970-01-01
      相关资源
      最近更新 更多