【问题标题】:PHP form validation from jQuery ajax post来自 jQuery ajax post 的 PHP 表单验证
【发布时间】:2013-04-03 03:26:21
【问题描述】:

我有一个使用http://bassistance.de/jquery-plugins/jquery-plugin-validation/ 验证器验证客户端的表单(名字、姓氏等)。然后我使用 ajax serialize() 将表单字段发布到服务器,但是我想知道是否有人可以共享一个类(或链接到类)以进行服务器端验证。

我尝试过使用http://www.html-form-guide.com/php-form/php-form-validation.html,但这看起来像此类期望表单字段的名称应用验证。

谢谢

【问题讨论】:

  • 为什么不手动检查您的值?在不了解您的项目的情况下似乎很容易...empty()is_numeric()count() 是一个简单的开始
  • 嗨,如果没有现成的课程,我会这样做。要检查的表单字段数量并不多 - 是一个数字,而不是 null,电子邮件等。我只需要确保发送的数据是 DB 字段的预期数据。
  • 在寻找东西的时候,你可能会完成两次手动检查......但我明白了。我也有时会迷失在细节上;)祝你好运

标签: php jquery


【解决方案1】:

...好吧,如果您正在寻找清理传递的值以确保没有坏事通过,那么您可以在这里查看: http://php.net/manual/en/filter.filters.sanitize.php

如果您正在寻找基于某些预设规则的“验证”,请指定。

如果您只需要基本字符,您也可以像这样对传递的值进行部分消毒。设置:

function sterilize($input) {

$input = htmlentities($input);

$input = strip_tags($input);

    return $input;

}

仅供参考,如下所述,对于电子邮件地址,您可以使用以下内容:

$email = isset($_POST['email']) ? filter_var($_POST['email'], FILTER_SANITIZE_EMAIL): '';

【讨论】:

  • 对不起,我正在寻找验证信息,即电子邮件是有效的电子邮件地址,名字不是空值等
  • 这里的解决方案似乎有效。在帖子中有一个指向phpro.org/classes/Validation-Class.html 的链接,它似乎接受已发布的字段。谢谢:)
【解决方案2】:

该库不需要表单的名称。如果您查看他们给您的示例,他们只使用输入字段的名称。

<?PHP
require_once "formvalidator.php";
$show_form=true;
if(isset($_POST['Submit']))
{
    $validator = new FormValidator();
    $validator->addValidation("Name","req","Please fill in Name");
    $validator->addValidation("Email","email",
"The input for Email should be a valid email value");
    $validator->addValidation("Email","req","Please fill in Email");
    if($validator->ValidateForm())
    {
        echo "<h2>Validation Success!</h2>";
        $show_form=false;
    }
    else
    {
        echo "<B>Validation Errors:</B>";

        $error_hash = $validator->GetErrors();
        foreach($error_hash as $inpname => $inp_err)
        {
          echo "<p>$inpname : $inp_err</p>\n";
        }
    }
}

if(true == $show_form)
{
?>
<form name='test' method='POST' action='' accept-charset='UTF-8'>
Name: <input type='text' name='Name' size='20'>
Email: <input type='text' name='Email' size='20'>
<input type='submit' name='Submit' value='Submit'>
</form>
<?PHP
}//true == $show_form
?>

表单的名称是“test”。它没有被检查。请发布您的源代码,以便有人可以帮助您找到问题所在。

您也可以查看以下帖子了解更多库 - Easiest Form validation library for PHP?

【讨论】:

  • 正确但是当我使用 ajax 发布信息时,我不确定如何使用表单字段名称。 $_POST['firstname'] 获取表单域 firstname 的值。
  • 如果你输入的名字是'firstname',把验证器初始化改成$validator->addValidation("firstname","re​​q","请填写名字");
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多