Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

guhfloripa

verificação se o site está online ou se existe com php

Recommended Posts

Boa noite,

 

Estou criando uma função simples, para verificar se a URL é válida:

 

<?

$url = "imasters.com.br";

if (preg_match('%^http(s)?://%i', $url)==false) {

$url = "http://".$url;

}

echo $url;

?>

 

Ele verifica se tem http ou https, se nao tiver ele adicionada na url, após isso quero pegar a URL, e entrar automaticamente no site, e saber se o mesmo existe, caso existir vou inserir no banco de dados.

 

Alguem sabe como fazer isso? Ou se tem alguma forma melhor para validar url?

Se possível sem usar curl, e sem perigo, não gostaria de correr o risco de meu servidor acessar o site e ser infectado por um site malicioso.

 

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

cURL seria a melhor alternativa, talvez com websockets ou file_get_contentes. A idéia é bem simples, os servidores web retornam o erro 404 quando a página não é encontrada, então, é só analisar o cabecalho.

 

com file_get_contentes bem simples:

<?php
$site = "umsitequenaoexiste";
if(file_get_contents($site))
	echo "retornou o site";
else
	echo "Erro 404";
?>

 

dá pra melhorar, foi só uma idéia que passei

 

 

em cURL:

<?php
	$site = "http://www.lucaspeperaio.com.br";
	$cURL = curl_init();
	curl_setopt($cURL, CURLOPT_URL, $site);
	curl_setopt($cURL, CURLOPT_RETURNTRANSFER, false);
	curl_setopt($cURL, CURLOPT_HEADER, false);
	curl_setopt($cURL, CURLOPT_NOBODY, true);
	if(curl_exec($cURL)){
		echo "página encontrada";
		$resultado = curl_exec($cURL);
	}
	else
		echo "página não encontrada";
	curl_close($cURL);
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

avalie os critérios também

 

uma página não encontrada nao significa necessariamente que o site não existe, porque pode estar fora do ar temporariamente, ou somente naquele instante de milionésimos de segundos.

 

o status 404 também não quer dizer que o site não existe.

 

cuidado tb com uso do curl, é muito problemático com resolução dns em ambiente unix mal configurados (maioria dos hosts)

 

quando for conectar em https, utilize um CA válido

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

Vai ai mais um script usando cURL

<?php
$cURL = curl_init('http://www.sitequenaoexiste.net.br');
curl_setopt($cURL, CURLOPT_RETURNTRANSFER, true);

// Seguir qualquer redirecionamento que houver na URL
curl_setopt($cURL, CURLOPT_FOLLOWLOCATION, true);

$resultado = curl_exec($cURL);

// Pega o código de resposta HTTP
$resposta = curl_getinfo($cURL, CURLINFO_HTTP_CODE);

curl_close($cURL);

if ($resposta == '404') {
	echo 'O site está fora do ar (ERRO 404)!';
} else {
	echo 'Parece que está tudo bem...';
}
?>

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.