1 | <?php
|
---|
2 | /**
|
---|
3 | * Zend Framework
|
---|
4 | *
|
---|
5 | * LICENSE
|
---|
6 | *
|
---|
7 | * This source file is subject to the new BSD license that is bundled
|
---|
8 | * with this package in the file LICENSE.txt.
|
---|
9 | * It is also available through the world-wide-web at this URL:
|
---|
10 | * http://framework.zend.com/license/new-bsd
|
---|
11 | * If you did not receive a copy of the license and are unable to
|
---|
12 | * obtain it through the world-wide-web, please send an email
|
---|
13 | * to license@zend.com so we can send you a copy immediately.
|
---|
14 | *
|
---|
15 | * @category Zend
|
---|
16 | * @package Zend_Validate
|
---|
17 | * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
|
---|
18 | * @license http://framework.zend.com/license/new-bsd New BSD License
|
---|
19 | * @version $Id: Ip.php 13104 2008-12-08 22:31:50Z tjohns $
|
---|
20 | */
|
---|
21 |
|
---|
22 | /**
|
---|
23 | * @see Zend_Validate_Abstract
|
---|
24 | */
|
---|
25 | require_once 'Zend/Validate/Abstract.php';
|
---|
26 |
|
---|
27 | /**
|
---|
28 | * @category Zend
|
---|
29 | * @package Zend_Validate
|
---|
30 | * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
|
---|
31 | * @license http://framework.zend.com/license/new-bsd New BSD License
|
---|
32 | */
|
---|
33 | class Zend_Validate_Ip extends Zend_Validate_Abstract
|
---|
34 | {
|
---|
35 | const NOT_IP_ADDRESS = 'notIpAddress';
|
---|
36 |
|
---|
37 | /**
|
---|
38 | * @var array
|
---|
39 | */
|
---|
40 | protected $_messageTemplates = array(
|
---|
41 | self::NOT_IP_ADDRESS => "'%value%' does not appear to be a valid IP address"
|
---|
42 | );
|
---|
43 |
|
---|
44 | /**
|
---|
45 | * Defined by Zend_Validate_Interface
|
---|
46 | *
|
---|
47 | * Returns true if and only if $value is a valid IP address
|
---|
48 | *
|
---|
49 | * @param mixed $value
|
---|
50 | * @return boolean
|
---|
51 | */
|
---|
52 | public function isValid($value)
|
---|
53 | {
|
---|
54 | $valueString = (string) $value;
|
---|
55 |
|
---|
56 | $this->_setValue($valueString);
|
---|
57 |
|
---|
58 | if ((ip2long($valueString) === false) || (long2ip(ip2long($valueString)) !== $valueString)) {
|
---|
59 | if (!function_exists('inet_pton')) {
|
---|
60 | $this->_error();
|
---|
61 | return false;
|
---|
62 | } else if ((@inet_pton($value) === false) ||(inet_ntop(@inet_pton($value)) !== $valueString)) {
|
---|
63 | $this->_error();
|
---|
64 | return false;
|
---|
65 | }
|
---|
66 | }
|
---|
67 |
|
---|
68 | return true;
|
---|
69 | }
|
---|
70 |
|
---|
71 | }
|
---|