2016-04-12 2 views
0

Я бы хотел разрешить только ссылки https: //, которые будут использоваться как удаленные изображения аватара в phpbb, чтобы избежать смешанного содержимого. Это, кажется, код, который используется для проверки, правильно ли введен URL (чтобы найти в /phpbb/avatar/driver/remote.php):preg_match разрешить только https: // в URL-адресе

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 
    }