【发布时间】:2011-01-19 12:03:36
【问题描述】:
我正在制作个人资料页面,用户可以在其中设置个人资料图片的网址。例如,如何使用正则表达式检查这一点?
【问题讨论】:
-
您到底打算“检查”什么?标准是什么?
标签: php regex security validation url
我正在制作个人资料页面,用户可以在其中设置个人资料图片的网址。例如,如何使用正则表达式检查这一点?
【问题讨论】:
标签: php regex security validation url
您可以使用 cURL 作为 mime。对于 URL 验证,我使用以下内容,但那里有很多负载。您可以使用FILTER_VALIDATE_URL,但它可能包含错误; http://bugs.php.net/51192.
$url='image.png';
if( preg_match("#((http|https|ftp)://(\S*?\.\S*?))(\s|\;|\)|\]|\[|\{|\}|,|\"|'|:|\<|$|\.\s)#ie", $url) ){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_REFERER, 'http://yoursite.com');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_NOBODY, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
curl_exec($ch);
$mime = curl_getinfo($ch, CURLINFO_CONTENT_TYPE);
curl_close($ch);
print $mime;
}
【讨论】:
你不能。任何文件都可以在任何地址提供。您需要检查 URL 返回的 Content-Type,可能还需要检查图像的格式。
【讨论】:
您可以使用FILTER_VALIDATE_URL。
看:parsing url - php, check if scheme exists, validate url regex
【讨论】:
第一个测试是 filter_var() 的有效 url
$url = filter_var($variable, FILTER_VALIDATE_URL, FILTER_FLAG_SCHEME_REQUIRED);
然后你需要下载资源,并在本地测试它是否是图像。
【讨论】: