preg_match只允许在URL中使用https://

时间:2016-04-12 01:01:31

标签: preg-match phpbb3

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

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;
}

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

1 个答案:

答案 0 :(得分:1)

根据@casimir的建议,我使用了以下代码并且它可以工作:

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