考虑域验证

时间:2016-12-20 03:22:54

标签: php function validation url dns

这是我的第一个问题。顺便说一下,我对RegExes感到不安。

我正在考虑一个验证域或URL的PHP​​函数,由用户输入给出。 (子)域名应通过html输入字段收集。 因此,我必须处理不同的格式,例如http(s)://domain.tlddomain.tld这两种格式都可能包含路径或无效。

该函数应该纠正几乎正确的用户输入,而不是返回false。

最后,我想返回格式(sub.)domain.tld,但仅针对真实的现有域。

我的WIP解决方案如下。你觉得怎么样?

function valDomain($url,$prefix=""){
    $url = trim($url);
    $url = str_replace(" ", "", $url);
    $url = trim($url,'.');
    $url = trim($url,'?');
    $url = trim($url,'-');
    $url = trim($url,'/');
    $url = strtolower($url);
    $url = substr($url,0,100);

    if(strpos($url,'.') == false) {
        return false;
    }

    if(strpos($url,'http') !== false) {
        $x = parse_url($url);
        if(isset($x['host'])){
            $url = $x['host'];
        }
    }
    if(strpos($url,'/') !== false) {
        $x = explode("/", $url);
        if(isset($x[0])){
            $url = $x[0];
        }
    }

    if(checkdnsrr($url,"A")){
        return $prefix.$url;
    } else {
        return false;
    }
}

解释:它整理了用户输入,检查它是否可以是一个url / domain,如果它是一个合适的url,删除路径,然后,当它只应该是原始URL,检查是否有与之对应的dns条目。只有在是的情况下,它才会返回经过验证的域。其他它返回false。

这有意义吗?

$prefix参数可以选择用于向网址添加http://以呈现超链接)。 检索到的结果将存储在数据库中,因此它们需要是黑客安全的。

0 个答案:

没有答案
相关问题