gpt4 book ai didi

email - Magento 主机名验证错误

转载 作者:行者123 更新时间:2023-12-03 21:35:15 25 4
gpt4 key购买 nike

当我尝试在我正在开发的 magento 商店上注册电子邮件时,遇到了我以前从未见过的错误
说的是:

"Email" is not a valid hostname

does not appear to be a valid local network name

appears to be a DNS hostname but cannot match TLD against known list magento

当我进行研究时,我发现这些错误是由 Zend 主机名验证引起的。

是否有可能解决这些问题或根本没有解决方案

最佳答案

我遇到了同样的错误:

"Email" is not a valid hostname.
'example.example' appears to be a DNS hostname but cannot match TLD against known list
'example.example' appears to be a local network name but local network names are not allowed

从 Magento 1 来看,Zend 似乎正在使用 Tlds 的硬编码列表:
     /**
* Array of valid top-level-domains
*
* @see ftp://data.iana.org/TLD/tlds-alpha-by-domain.txt List of all TLDs by domain
* @see http://www.iana.org/domains/root/db/ Official list of supported TLDs
* @var array
*/
protected $_validTlds = array(
'ac', 'ad', 'ae', 'aero', 'af', 'ag', 'ai', 'al', 'am', 'an', 'ao', 'aq', 'ar', 'arpa',
[...]
'ye', 'yt', 'yu', 'za', 'zm', 'zw'
);

所以,有一些选择:
  • 选项 1 : 从 zend github 更新此列表
  • 选项 2 : 删除域验证
  • 选项 3 :来自@ Aleksey Razbakov评论,我们只能检查MX记录:https://framework.zend.com/manual/1.12/en/zend.validate.set.html#zend.validate.set.email_address.checkacceptance


  • 对于 选项 2 我们可以对以下文件执行安全升级,或查看选项 3 以添加 $validator->getHostnameValidator()->setValidateTld(false); ,复制它:
    /lib/Zend/Validate/Hostname.php
    到 :
    /app/code/local/Zend/Validate/Hostname.php
    然后寻找这块代码,只注释三行:
    if (!in_array($this->_tld, $this->_validTlds)) {
    // $this->_error(self::UNKNOWN_TLD);
    // $status = false;
    // break;
    }

    对于 选项 3 我们可以对以下文件执行安全升级,从以下位置复制它:
    app/code/core/Mage/Eav/Model/Attribute/Data/Abstract.php
    到 :
    /app/code/local/Mage/Eav/Model/Attribute/Data/Abstract.php
    然后替换此代码:
    $validator = new Zend_Validate_EmailAddress();

    经过 :
    // 1. we check mx record
    $validator = new Zend_Validate_EmailAddress(
    array(
    'allow' => Zend_Validate_Hostname::ALLOW_DNS,
    'mx' => true
    )
    );
    // 2. we remove TLD validation :
    $validator->getHostnameValidator()->setValidateTld(false);

    不要忘记寻找 Zend_Validate_EmailAddress 的每一个电话可用于社区或自定义扩展的类(例如:onestepcheckout)。

    关于email - Magento 主机名验证错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25011227/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com