【问题标题】:Php form validation, PostPHP 表单验证,发布
【发布时间】:2014-07-11 22:56:43
【问题描述】:

这是我的表单标题。

<form action="/page" id="landing_form" method="post" style="top:<?php echo get_post_meta($p->ID, 'top', true); ?>px; left:<?php echo get_post_meta($p->ID, 'left', true); ?>px;"  >

我的表单中有一个简单的文本字段,然后提交按钮

<label>Email</label><input type="text" value="" id="landing_email" name="email" >
<input type="submit" name="submit" value="<?php echo get_post_meta($p->ID, 'button', true); ?>" class="landing_submit" id="landing_submit">

现在我将如何创建一个函数来检查电子邮件中是否包含“.”/“@”?或者是一个特定的字符串。

我已经尝试在我的标题中放入类似onSubmit="return function('email);" 的内容,然后将函数放入文件中。

但它甚至不检查功能,而只是提交表单。

【问题讨论】:

  • 如果我理解正确,您实际上想要使用 JavaScript 进行 客户端 验证。例如在数据满足您的需求之前,您不希望将表单提交到服务器。 (这不排除服务器端验证需求......但您现在想要的是基于浏览器的验证 - 对吗?)

标签: php html forms footer


【解决方案1】:

假设您需要客户端验证,您将必须创建一个类似 post 的 JavaScript 函数

因此你需要你的方法:

<script>
function validateEmail(email) { 
    var re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
    return re.test(email);
} 
function validate(email) {
    if (!validateEmail(email)) {
        return false;
    }

}
</script>

然后在您插入的表格上:

onSubmit="validate(email);"

如果电子邮件无效,这不应该允许表单提交。 请注意,您还必须在服务器端验证电子邮件。

【讨论】:

  • 我会检查一下。谢谢!
【解决方案2】:

"onSubmit" 属性在提交按钮被按下时调用一段 javascript。它根本不与您的 PHP 交互。

您的“页面”页面可能需要如下内容:

<?php 
    if(isset($_POST['submit']))
    {
        $email = $_POST['email'];
        if(strpos($email, '@') && strpos($email, '.') && strpos($email, 'some specific string'))
        {
            // This code executes
            // only if there is an @
            // and a full stop and "some specific string"
            // inside the email
        }
    }
?>

Strpos 是一个在字符串中搜索子字符串并返回其第一次出现的位置的函数。如果找不到子字符串,则返回 false。

【讨论】:

  • 现在有没有办法“踢出帖子”并返回表单?或者它会完全停止。更多的是预检查,我不确定这是否可以用作预检查或仅在帖子通过后使用。
  • 你可以做的就是在表单所在的页面上有这个,这样它就会返回到表单并在它无效时显示一条消息。
猜你喜欢
  • 2013-04-10
  • 1970-01-01
  • 2016-09-08
  • 1970-01-01
  • 2016-08-07
  • 1970-01-01
  • 1970-01-01
  • 2014-06-19
  • 2012-02-13
相关资源
最近更新 更多