00001 <?php 00025 require_once 'Zend/Validate/Abstract.php'; 00026 00033 class Zend_Validate_Ip extends Zend_Validate_Abstract 00034 { 00035 const INVALID = 'ipInvalid'; 00036 const NOT_IP_ADDRESS = 'notIpAddress'; 00037 00041 protected $_messageTemplates = array( 00042 self::INVALID => "Invalid type given, value should be a string", 00043 self::NOT_IP_ADDRESS => "'%value%' does not appear to be a valid IP address" 00044 ); 00045 00054 public function isValid($value) 00055 { 00056 if (!is_string($value)) { 00057 $this->_error(self::INVALID); 00058 return false; 00059 } 00060 00061 $this->_setValue($value); 00062 00063 if ((ip2long($value) === false) || (long2ip(ip2long($value)) !== $value)) { 00064 if (!function_exists('inet_pton')) { 00065 $this->_error(self::NOT_IP_ADDRESS); 00066 return false; 00067 } else if ((@inet_pton($value) === false) ||(inet_ntop(@inet_pton($value)) !== $value)) { 00068 $this->_error(self::NOT_IP_ADDRESS); 00069 return false; 00070 } 00071 } 00072 00073 return true; 00074 } 00075 00076 }