⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hostname.php

📁 一款可以和GOOGLE媲美的开源统计系统,运用AJAX.功能强大. 无色提示:按照需要PHP5.1以上和MySQL数据库支持。
💻 PHP
📖 第 1 页 / 共 2 页
字号:
    public function setAllow($allow)    {        $this->_allow = $allow;        return $this;    }    /**     * Set whether IDN domains are validated     *     * This only applies when DNS hostnames are validated     *     * @param boolean $allowed Set allowed to true to validate IDNs, and false to not validate them     */    public function setValidateIdn ($allowed)    {        $this->_validateIdn = (bool) $allowed;    }    /**     * Set whether the TLD element of a hostname is validated     *     * This only applies when DNS hostnames are validated     *     * @param boolean $allowed Set allowed to true to validate TLDs, and false to not validate them     */    public function setValidateTld ($allowed)    {        $this->_validateTld = (bool) $allowed;    }    /**     * Sets the check option     *     * @param  integer $check     * @return Zend_Validate_Hostname Provides a fluent interface     */    /*    public function setCheck($check)    {        $this->_check = $check;        return $this;    }     */    /**     * Defined by Zend_Validate_Interface     *     * Returns true if and only if the $value is a valid hostname with respect to the current allow option     *     * @param  string $value     * @throws Zend_Validate_Exception if a fatal error occurs for validation process     * @return boolean     */    public function isValid($value)    {        $valueString = (string) $value;        $this->_setValue($valueString);        // Check input against IP address schema        if ($this->_ipValidator->setTranslator($this->getTranslator())->isValid($valueString)) {            if (!($this->_allow & self::ALLOW_IP)) {                $this->_error(self::IP_ADDRESS_NOT_ALLOWED);                return false;            } else{                return true;            }        }        // Check input against DNS hostname schema        $domainParts = explode('.', $valueString);        if ((count($domainParts) > 1) && (strlen($valueString) >= 4) && (strlen($valueString) <= 254)) {            $status = false;            do {                // First check TLD                if (preg_match('/([a-z]{2,10})$/i', end($domainParts), $matches)) {                    reset($domainParts);                    // Hostname characters are: *(label dot)(label dot label); max 254 chars                    // label: id-prefix [*ldh{61} id-prefix]; max 63 chars                    // id-prefix: alpha / digit                    // ldh: alpha / digit / dash                    // Match TLD against known list                    $this->_tld = strtolower($matches[1]);                    if ($this->_validateTld) {                        if (!in_array($this->_tld, $this->_validTlds)) {                            $this->_error(self::UNKNOWN_TLD);                            $status = false;                            break;                        }                    }                    /**                     * Match against IDN hostnames                     * @see Zend_Validate_Hostname_Interface                     */                    $labelChars = 'a-z0-9';                    $utf8 = false;                    $classFile = 'Zend/Validate/Hostname/' . ucfirst($this->_tld) . '.php';                    if ($this->_validateIdn) {                        if (Zend_Loader::isReadable($classFile)) {                            // Load additional characters                            $className = 'Zend_Validate_Hostname_' . ucfirst($this->_tld);                            Zend_Loader::loadClass($className);                            $labelChars .= call_user_func(array($className, 'getCharacters'));                            $utf8 = true;                        }                    }                    // Keep label regex short to avoid issues with long patterns when matching IDN hostnames                    $regexLabel = '/^[' . $labelChars . '\x2d]{1,63}$/i';                    if ($utf8) {                        $regexLabel .= 'u';                    }                    // Check each hostname part                    $valid = true;                    foreach ($domainParts as $domainPart) {                        // Check dash (-) does not start, end or appear in 3rd and 4th positions                        if (strpos($domainPart, '-') === 0 ||                        (strlen($domainPart) > 2 && strpos($domainPart, '-', 2) == 2 && strpos($domainPart, '-', 3) == 3) ||                        strrpos($domainPart, '-') === strlen($domainPart) - 1) {                            $this->_error(self::INVALID_DASH);                            $status = false;                            break 2;                        }                        // Check each domain part                        $status = @preg_match($regexLabel, $domainPart);                        if ($status === false) {                            /**                             * Regex error                             * @see Zend_Validate_Exception                             */                            require_once 'Zend/Validate/Exception.php';                            throw new Zend_Validate_Exception('Internal error: DNS validation failed');                        } elseif ($status === 0) {                            $valid = false;                        }                    }                    // If all labels didn't match, the hostname is invalid                    if (!$valid) {                        $this->_error(self::INVALID_HOSTNAME_SCHEMA);                        $status = false;                    }                } else {                    // Hostname not long enough                    $this->_error(self::UNDECIPHERABLE_TLD);                    $status = false;                }            } while (false);            // If the input passes as an Internet domain name, and domain names are allowed, then the hostname            // passes validation            if ($status && ($this->_allow & self::ALLOW_DNS)) {                return true;            }        } else {            $this->_error(self::INVALID_HOSTNAME);        }        // Check input against local network name schema; last chance to pass validation        $regexLocal = '/^(([a-zA-Z0-9\x2d]{1,63}\x2e)*[a-zA-Z0-9\x2d]{1,63}){1,254}$/';        $status = @preg_match($regexLocal, $valueString);        if (false === $status) {            /**             * Regex error             * @see Zend_Validate_Exception             */            require_once 'Zend/Validate/Exception.php';            throw new Zend_Validate_Exception('Internal error: local network name validation failed');        }        // If the input passes as a local network name, and local network names are allowed, then the        // hostname passes validation        $allowLocal = $this->_allow & self::ALLOW_LOCAL;        if ($status && $allowLocal) {            return true;        }        // If the input does not pass as a local network name, add a message        if (!$status) {            $this->_error(self::INVALID_LOCAL_NAME);        }        // If local network names are not allowed, add a message        if ($status && !$allowLocal) {            $this->_error(self::LOCAL_NAME_NOT_ALLOWED);        }        return false;    }    /**     * Throws an exception if a regex for $type does not exist     *     * @param  string $type     * @throws Zend_Validate_Exception     * @return Zend_Validate_Hostname Provides a fluent interface     */    /*    protected function _checkRegexType($type)    {        if (!isset($this->_regex[$type])) {            require_once 'Zend/Validate/Exception.php';            throw new Zend_Validate_Exception("'$type' must be one of ('" . implode(', ', array_keys($this->_regex))                                            . "')");        }        return $this;    }     */}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -