Script que abre uma URL e verifica se a mesma URL está online ou offline

0 respostas
J

Olá pessoal,

Tenho o script abaixo que captura as urls retornadas do resultado da busca do meu banco de dados e abre no navegador e ao mesmo tempo também checa se esta mesma URL que foi aberta está online ou offline, para marcar a situação da url no meu banco.

O problema é na rotina da verificação se a url está online ou offline, pois o SELECT que deveria pegar automaticamente a URL que será checada se está online ou offline não está pegando conforme linha abaixo:

$sql = “SELECT id, quebrado, url FROM websites where url = $url”;

Se eu colocar a URL diretamente no select como no exemplo abaixo, o script funciona normalmente verificando se a url está online ou offline, mas não consigo colocar para o select capturar automaticamente a url sem a necessidade de colocar manualmente.

$sql = “SELECT id, quebrado, url FROM websites where url = ‘www.uol.com.br’”;

Abaixo está o script completo responsável em capturar uma URL do resultado da busca e abre a url no navegador e também checar se esta mesma url está online ou offline.


<?php

if(isset($_GET[“url”])){
$url = ($_GET[“url”]);

include_once('bd/inc-bd.php');


$arquivo_estatistica  = file_get_contents('estatistica/enable.cfg');
if($arquivo_estatistica == "true"){
	$estatisticaEnable = true;
}else{
	$estatisticaEnable = false;
}
if($estatisticaEnable == true){		
	$hoje = 'hoje_click';
	$mes = 'mes_click';
	$ano = 'ano_click';
	
	$stmt = $mysqli -> prepare('call add_statistic( ?, ?, ? )');
	$stmt -> bind_param('sss', $hoje, $mes, $ano) &&
	$stmt -> execute();	
	$mysqli->close();
}

header("location: ".$url);
}else{

/<em>não tem url</em>/

header(“location: index.php”);

}

//Aqui começa a rotina da verificação se a url está online ou offline onde não consigo colocar para o SELECT pegar automaticamente a url que foi capturada pelo script

include_once(“adminsys/functions_login.php”);

set_time_limit(0);

/<em>Define o endereço do site</em>/

$sql = “SELECT id, quebrado, url FROM websites where url = $url”;

$stmt = $PDO -> prepare($sql);

$stmt -> execute();

$contador = 1;

while ($website = $stmt->fetch(PDO::FETCH_ASSOC)) {

@$verifica = verificarLink($website["url"]); 

if(($verifica >= 200 )&&($verifica < 400)){
	$numero = 0;
	

	$stmt_corrige = $PDO -> prepare('call corrige_website( ?, ? )');
	$stmt_corrige -> bindParam(1, $website["id"],PDO::PARAM_INT) ;
	$stmt_corrige -> bindParam(2,  $numero, PDO::PARAM_INT) ;
	if (
		$stmt_corrige -> execute()
	) {
		
		printConsole('-- '.$website["id"].' url corrigida 0 ');
		
	} else {
		printConsole('Erro não conseguiu corrigir 0 - '.$PDO->error);
	}

	$contador++;
	
}else{
	
	$numero = 1;

		
		$stmt_corrige = $PDO -> prepare('call corrige_website( ?, ?)');
		$stmt_corrige -> bindParam(1, $website["id"],PDO::PARAM_INT) ;
		$stmt_corrige -> bindParam(2,  $numero, PDO::PARAM_INT) ;
		if (
			
			$stmt_corrige -> execute()
		) {
			
			printConsole('-- '.$website["id"].' url corrigida 1 ');
			
		} else {
			printConsole('Erro não conseguiu corrigir 2 - '.$PDO->error);
		}
		$contador++;
	}
	
	
	
}
function printConsole($msg){

echo ‘’;

}

function verificarLink($url){

$ch = curl_init($url);

curl_setopt($ch, CURLOPT_TIMEOUT, 5);

curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

curl_setopt($ch, CURLOPT_NOBODY, true);

curl_setopt($ch, CURLOPT_HEADER, true);

curl_setopt($ch, CURLOPT_HTTPGET, true);

curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, 5);

curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);

$data = curl_exec($ch);

$httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);

curl_close($ch);
return $httpcode;

}

?>


Criado 30 de agosto de 2019
Respostas 0
Participantes 1