我有两个网站使用Codeigniter.今天我已将网站更新为Codeigniter 3.1.7(来自3.1.6).之后,在其中一个网站上,电子邮件验证已经中断,valid_email验证规则不再有效.在第二个网站上都很好.我检查了错误日志并发现错误:
ERROR - 2018-02-06 10:13:21 --> Severity: Warning --> idn_to_ascii() expects parameter 3 to be long, string given /public_html/system/libraries/Form_validation.php 1235
Run Code Online (Sandbox Code Playgroud)
Codeigniter的changlog说:
Updated Form Validation Library rule valid_email to use INTL_IDNA_VARIANT_UTS46 for non-ASCII domain names.
Run Code Online (Sandbox Code Playgroud)
在我看来,INTL_IDNA_VARIANT_UTS46常数没有定义.网站使用PHP Version 5.6.30
我该如何解决这个问题?
小智 5
转到 system/library/email.php 并替换 valid_email()
public function valid_email($email)
{
if (function_exists('idn_to_ascii') && defined('INTL_IDNA_VARIANT_UTS46') && $atpos = strpos($email, '@'))
{
$email = self::substr($email, 0, ++$atpos).idn_to_ascii(self::substr($email, $atpos), 0, INTL_IDNA_VARIANT_UTS46);
}
return (bool) filter_var($email, FILTER_VALIDATE_EMAIL);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4160 次 |
| 最近记录: |