我想只允许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()字符串吗?
答案 0 :(得分:1)
根据@casimir的建议,我使用了以下代码并且它可以工作:
$urlchk = parse_url($url);
$urlscheme = isset($urlchk['scheme']) ? $urlchk['scheme'].'://' : 'http://';
if ($urlscheme=='http://'){
// error message
}