【问题标题】:php email sanitize and validation not workingphp电子邮件清理和验证不起作用
【发布时间】:2015-06-15 00:53:22
【问题描述】:

我有这个 php 代码

if(filter_var($_POST['username'], FILTER_SANITIZE_EMAIL) !== false && filter_var($_POST['username'], FILTER_VALIDATE_EMAIL) !== false) {
                echo 'it is mail';
            }else{
                echo 'is is phone';
            }

当我像这样发送帖子数据时

example@bla.com

它正在写它是邮件。但是当我像这样发送数据时

+995216846121

那么它也写它是邮件

怎么了? 请帮帮我。

我需要检查客户是否添加了邮件或电话号码。

【问题讨论】:

  • filter_validate_email 在此处正确拒绝电话号码。尝试调试您的系统:为这两个选项执行var_dump(filter_var(...)),并确认它们返回正确的真/假。
  • 现在我尝试 var_dump(filter_var($_POST['username'], FILTER_SANITIZE_EMAIL));并且在它们两者中它都返回字符串(这里是长度)和相同的字符串有问题我可以像 (int)$_POST['username'] 那样转换这个字符串然后检查它吗?或类似的东西?
  • 你确定这段代码有错误吗?对我来说它工作正常
  • 是的,我m sure. it is not working. I give you my code how Im 检查。它不工作。
  • sanitize 只是清理并返回字符串的剩余部分。 validate 返回一个真/假...

标签: php email-validation phone-number filter-var


【解决方案1】:

我用 is_numeric() 添加了一个检查,现在一切都很好。 谢谢大家!!!

【讨论】:

  • 另一种选择是正则表达式。然后您可以为电子邮件和电话定义自己的模式。
  • 不需要正则表达式。 is_numeric 类正在做我需要的。因此,如果我发送数据,例如+124654654 它会返回 true;
  • 我写的是Another option,而不是the one and only ;) 如果您可以确保电话号码始终采用这种格式,那么您的解决方案就很好。但如果有人输入“+12 123123-34”,is_numberic 将返回 false,因为空格和“-”。
  • 那么你能给我删除减号、空格和其他字符的正则表达式代码吗?在这种情况下用户可以使用什么可能是用户添加 +(995) 5(58) 55-55-55 或 I不知道。你能给我这个正则表达式吗?所以我会确保用户不会再写任何东西。
  • 一开始我会为任何 [0-9] 做一个 str_replace。
猜你喜欢
  • 2015-01-20
  • 1970-01-01
  • 2017-05-27
  • 2012-08-19
  • 2019-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多