TRi*_*RiG 9 php email filtering
示例有效的电子邮件地址:
"这是一个有效的地址"@ example.com
PHP代码:
<?php
header('Content-Type: text/plain');
$email = '"this is a valid address"@example.com';
$checked = filter_var($email, FILTER_VALIDATE_EMAIL);
var_dump($email, $checked);
Run Code Online (Sandbox Code Playgroud)
一台服务器上的输出:(PHP Version 5.2.6):
string(37)""这是一个有效的地址"@ example.com"
string(37)""这是一个有效的地址"@ example.com"
phpinfo():
Input Validation and Filtering enabled
Revision $Revision: 1.52.2.42 $
Directive Local Value Master Value
filter.default unsafe_raw unsafe_raw
filter.default_flags no value no value
Run Code Online (Sandbox Code Playgroud)
另一台服务器上的输出(PHP Version 5.3.3):
string(37)""这是一个有效的地址"@ example.com"
bool(false)
phpinfo():
Input Validation and Filtering enabled
Revision $Revision: 298196 $
Directive Local Value Master Value
filter.default unsafe_raw unsafe_raw
filter.default_flags no value no value
Run Code Online (Sandbox Code Playgroud)
我在文档中看不到任何暗示这已经改变的内容,所以也许是其他一些配置设置.
正如你在http://3v4l.org/vKONS上看到的那样,过滤器的用法FILTER_VALIDATE_EMAIL并不一致!
http://3v4l.org/vKONS输出PHP 5.2.0,5.2.14 - 5.2.17,5.3.3 - 5.3.18,5.4.0 - 5.4.8
string(37) ""this is a valid address"@example.com"
bool(false)
Run Code Online (Sandbox Code Playgroud)
对于5.2.1 - 5.2.13,5.3.0 - 5.3.2
string(37) ""this is a valid address"@example.com"
string(37) ""this is a valid address"@example.com"
Run Code Online (Sandbox Code Playgroud)
值得注意的是,它适用于5.2.0但不适用于5.2.1-5.2.13,然后再适用于5.2.14 !!!
Btw 3v4l.org是一个很好的资源,可以检查所有可用PHP版本中的此类行为更改.
有几个错误,包括术语FILTER_VALIDATE_EMAIL,但没有一个似乎与您的错误类型相匹配.您可以将它添加到PHP bugtracker中 ......