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{
/não tem url/
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);
/Define o endereço do site/
$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;
}
?>