PHP - 服务器端验证方法

时间:2010-07-31 04:56:00

标签: php

我正在使用jQuery Form Validation Plugin进行全面的客户端验证。

现在我想使用PHP进行服务器端验证。

检查电子邮件是否为电子邮件,年龄是否在正确的范围内等。

我是否可以使用类似的包或函数集合而不是手动编写所有验证方法?

谢谢

4 个答案:

答案 0 :(得分:1)

如果您正在编写更多或更少复杂的应用程序,您可能会从使用框架中受益,例如Zend Framework。它有一些独立的类来帮助验证过程,例如Zend_Validate:http://framework.zend.com/manual/en/zend.validate.html

答案 1 :(得分:1)

与PHP捆绑在一起的最接近的是filter extension。它进行验证和消毒。

答案 2 :(得分:1)

对于电子邮件验证,您可以使用is_email功能。 检查链接:http://www.ohloh.net/p/isemail

答案 3 :(得分:0)

这些是我使用的几种方法

<?php
  function chkReq($fields) {
    foreach($fields as $name) {
      if(req($name)) {
        global $values;
        $values[$name] = $_POST[$name];
      } else {
        global $errors;
        $errors[$name] = "This field is required";
      }
    }
  }

  function req($name) {
    if(isset($_POST[$name]) && !empty($_POST[$name])) {
      return true;
    } else {
      return false;
    }
  }

  function chkDate($name, $from, $to) {
    global $errors;
    global $values;
    if(!req($name)) {
      $errors[$name] = "This field is required";
    } elseif(!betweenNumbers($_POST[$name], $from, $to)) {
      $errors[$name] = "Value must be between $from en $to .";
      $values[$name] = $_POST[$name];
    } else {
      $values[$name] = $_POST[$name];
    }
  }

  function betweenNumbers($value, $from, $to) {
    if($value >= $from && $value <= $to) {
      return true;
    } else {
      return false;
    }
  }

  function chk3Fields($field1, $field2, $field3) {
    global $errors;
    global $values;
    if(!req($field1) && !req($field2) && !req($field3)) {
      $errors[$field1] = "One of the three fields is required";
      $errors[$field2] = "One of the three fields is required";
      $errors[$field3] = "One of the three fields is required";
    } else {
      $values[$field1] = $_POST[$field1];
      $values[$field2] = $_POST[$field2];
      $values[$field3] = $_POST[$field3];
    }
  }

  function checkRegistry($name){
    global $errors;
    global $values;
    if(!req($name)) {
      $errors[$name] = "This field is mandatory";
    } elseif(!validRegistry($_POST[$name])) {
      $errors[$name] = "This is not a valid registry number";
      $values[$name] = $_POST[$name];
    } else {
      $values[$name] = $_POST[$name];
    }
  }

  function validRegistry($value) {
    $value = preg_replace("/(\.|-)/", "", $value);
    $firstPart= substr($value, 0,9);
    $residueFirstPart= $firstPart% 97;
    $calculatedControlNr = 97 - $residueFirstPart;
    $obzervedControlNr = substr($value, 9, 2);
    return ($calculatedControlNr == $obzervedControlNr);
  }
?>