【问题标题】:filter_var in php 5.3.8php 5.3.8 中的 filter_var
【发布时间】:2012-12-01 13:41:16
【问题描述】:

我正在开发一个用户注册表单并想要验证用户的电子邮件地址。 但是,我读过的所有 php 文档都建议使用 filter_var。 我的脚本将有效的电子邮件验证为无效。 请发布一个工作脚本,或者指导我完成我的脚本。 她是我的剧本:

     <?php
      if(isset($_POST['email'])== true && empty($_POST['email'])false)
      {
       $email = $_POST['email'];
      }
      if(filter_var($email,FILTER_VALIDATE_EMAIL)) 
      {
       echo"valid email";
      }
      else
      {
      echo"invalid email";
      }
     ?>

【问题讨论】:

标签: php


【解决方案1】:
if(isset($_POST['email'])== true && empty($_POST['email'])false)

这应该是

if(isset($_POST['email']) && !empty($_POST['email']) )

或者@jack你可以直接使用

if (!empty($_POST['email']))

empty() 隐含isset()

【讨论】:

  • 或者只是if (!empty($_POST['email']))
  • @Jack 我想我会显示错误...如果未设置电子邮件,则未定义电子邮件
  • 不,empty() 隐含 isset()
【解决方案2】:
$email = isset($_POST['email']) ? $_POST['email'] : "";
echo(filter_var($email,FILTER_VALIDATE_EMAIL) ? "valid email" : "invalid email");

【讨论】:

    【解决方案3】:
      if(isset($_POST['email'])== true && empty($_POST['email'])false)
                               ^^^^^^^--redundant               ^^^^^---typo?
    

    【讨论】:

    • 整行是多余的,因为OP应该使用filter_input :)
    【解决方案4】:

    在您的情况下,您不应使用filter_var,而应使用filter_input。这就是您需要的所有代码:

    if ($email = filter_input(INPUT_POST, 'email', FILTER_VALIDATE_EMAIL)) {
        // email was submitted and is a valid email
    }
    

    这个bug 可能与您的问题有关。

    【讨论】:

      猜你喜欢
      • 2011-01-09
      • 1970-01-01
      • 2022-10-13
      • 2011-12-20
      • 1970-01-01
      • 2015-04-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多