2016-04-12 70 views
0

我想只允许在phpbb中使用https://链接作为远程头像图片以避免混合内容。这似乎是用来检查输入的网址是否正确的代码(在/phpbb/avatar/driver/remote.php找到):preg_match只允许在URL中使用https://

if (!preg_match('#^(http|https|ftp)://(?:(.*?\.)*?[a-z0-9\-]+?\.[a-z]{2,4}|(?:\d{1,3}\.){3,5}\d{1,3}):?([0-9]*?).*?\.('. implode('|', $this->allowed_extensions) . ')$#i', $url)) 
{ 
    $error[] = 'AVATAR_URL_INVALID'; 
    return false; 
} 

我想如果{添加} - 在此代码块之前,如果用户从非安全服务器中选择了图像,则提供信息性错误消息。任何人都可以帮我定义正确的preg_match()字符串吗?

+1

使用parse_url .. –

回答

0

基于由@casimir的建议,我用下面的代码和它的作品:

$urlchk = parse_url($url); 
    $urlscheme = isset($urlchk['scheme']) ? $urlchk['scheme'].'://' : 'http://'; 
    if ($urlscheme=='http://'){ 
     // error message 
    }