【问题标题】:preg_match to only allow https:// in an URLpreg_match 只允许在 URL 中使用 https://
【发布时间】:2016-04-12 01:01:30
【问题描述】:

我想只允许 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() 字符串吗?

【问题讨论】:

    标签: preg-match phpbb3


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2016-09-03
      • 2011-10-15
      • 2015-11-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多