我有外部域,例如 www.php-einfach.de ,并首先检查它们是否与checkdnsrr()
存在。现在,我必须检查该域上是否存在特定页面,例如 www.php-einfach.de/impressum 。我找到了一些解决方案,但是它们都使用协议类型。而且我不知道协议是http还是https。我以为我总是使用http时会得到正确的结果,因为在leat上每个网站都有这个。但是具有此功能:
function check_url($url){
$file_headers = @get_headers($url);
if(!$file_headers || $file_headers[0] == 'HTTP/1.1 404 Not Found') {
return false;
}
else {
return true;
}
}
当使用http和https并将 www.php-einfach.de/impressum 设为$url
时,我会得到不同的结果。
所以我使用了另一个功能:
function check_protocol($url){
$ch = curl_init("https://".$url);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_NOBODY, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_TIMEOUT,10);
$output = curl_exec($ch);
$httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($httpcode >= 200 && $httpcode < 400) {
return "https://";
}
else{
return "http://";
}
}
确定协议是http还是https。 因此,如果要检查网址,则必须执行以下操作:
check_url(check_protocol('www.php-einfach.de')."www.php-einfach.de/impressum")
但是我很确定我将这种方法变得复杂了。有谁有一个更简单的解决方案?
谢谢