Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá pessoal... Eu tenho uma função que verifica se a URL existe... E essa função retorna True ou False.
$info = verifica($url); //Aqui ele imprime true ou false..
Queria gravar no banco apenas as url's que retornaram true, como fazer?
$tb = $conn->query("INSERT INTO listas (categoria, titulo, url, imagem, data, usuario, playlist, urlamigavel, liberar, nomelista) VALUES ('$categoria', '$canal', '$url','$imagem','$data','$usuario','$link','$urlamigavel','assinantes','$nomelista')");
Mas dai ele grava tudo
o que é tudo e o que retorna o true? enxerta mais detalhes aí pra ficar mais facil entender...
Então, essa é função que verifica se a url existe pegando do $_POST['url']
function verifica($streaming){
$ch2 = curl_init();
curl_setopt($ch2, CURLOPT_URL, "/");
curl_setopt($ch2, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch2, CURLOPT_POSTFIELDS, "\"".$streaming."\"");
curl_setopt($ch2, CURLOPT_POST, 1);
$headers = array();
$headers[] = "X-Mashape-Key: X8e5S0";
$headers[] = "Content-Type: application/json";
$headers[] = "Accept: text/plain";
curl_setopt($ch2, CURLOPT_HTTPHEADER, $headers);
$info = curl_exec($ch2);
if (curl_errno($ch2)) {
echo 'Error:' . curl_error($ch2);
}
curl_close ($ch2);
return $info;
}
Dai quando eu imprimo $info ele retorna true ou false..tá mas o que é esse "tudo" que ele grava? não é só uma linha que vai ser gravada quando retornar true? de onde vem categoria, titulo, imagem, data, usuario etc e tal? vem mais de uma linha? porque tu diz que aí grava "tudo"... issaí que tá sinistro
Faz uma bateria de testes pra sua função.
Se ele está entrando no if qnd não deveria o erro está ai...
<?php
$sites = array(
'site1.com.br'
,'site2.com.br'
,'site3.com.br'
,'site4.com.br'
);
foreach($sites as $site){
var_dump("Resultado do site: $site" . verifica($site));
}
Assim fica mais fácil de você testar Vamos lá, vou explicar melhor...
Eu tenho uma tabela com o nome listas, nela eu gravo as colunas id, url, nome.
Só que eu quero que ao exibir a tabela ela mostre apenas as linha onde a url seja válida,
A função verificaStreaming.php verifica se a url está online retornando true ou false.
<?php
require_once("conn.php");
require_once("verificaStreaming.php");
$tb = $conn->prepare("SELECT * FROM listas ORDER By RAND() LIMIT 12");
$tb->execute();
while($ln = $tb->fetch(PDO::FETCH_ASSOC)){
$check = verifica($ln['url']);
if($check == true){
echo '<li><a href="v.php?id='.$ln['id'].'"><div class="mostraInfo"><img src="'.$ln['imagem'].'" width="110px"></div><div class="info">'.$ln['titulo'].'<br>Nome da Lista:<br>PlayList URL:<br>Usuário: <br>Data de Envio<br> '.$check.'</div></a></li>';
}
}
?>return $info;
Ao menos que seja um '1' ou '0' realmente sempre vai entrar como verdadeiro, caso seja um HTML completo ou qualquer coisa assim.
Se você fazer o teste que exemplifiquei 'mockando' ou via hard code msm:
var_dump("Resultado do site: $site" . verifica('site1.com.br'));
var_dump("Resultado do site: $site" . verifica('site2.com.br'));
Vai ter uma noção do que o seu código traz nesse 'return $info".
Recomendo deixar mais 0 ou um seu código..., exemplo faz de conta que o retorno dessa chamada de URL/Curl retorna 'VERDADEIRO'
Ex:
function verifica($streaming){
$ch2 = curl_init();
curl_setopt($ch2, CURLOPT_URL, "/");
curl_setopt($ch2, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch2, CURLOPT_POSTFIELDS, "\"".$streaming."\"");
curl_setopt($ch2, CURLOPT_POST, 1);
$headers = array();
$headers[] = "X-Mashape-Key: X8e5S0";
$headers[] = "Content-Type: application/json";
$headers[] = "Accept: text/plain";
curl_setopt($ch2, CURLOPT_HTTPHEADER, $headers);
$info = curl_exec($ch2);
if (curl_errno($ch2)) {
echo 'Error:' . curl_error($ch2);
}
curl_close ($ch2);
if($info == 'VERDADEIRO'){
return true;
} else {
return false;
}
}
MASSSSSSSSSSSSSSSSSSSSSSS
como você mesmo disse quer verificar se está 'online' .
Então nesse caso temos as resposta HTTP:
200 - Ok
[http://www.php.net/curl_getinfo](http://www.php.net/curl_getinfo)
Exemplo:
[http://stackoverflow.com/questions/11797680/curl-getting-http-code](http://stackoverflow.com/questions/11797680/curl-getting-http-code)
Lista das possibilidades a nivel HTTP-Code:
[https://pt.wikipedia.org/wiki/Lista_de_códigos_de_estado_HTTP](https://pt.wikipedia.org/wiki/Lista_de_c%C3%B3digos_de_estado_HTTP)
Bons estudos, (sim eu poderia fazer o exemplo em cima do que você precisa... porem perdia a graça de você aprender hehe)e se o site existir mas estar off no momento?
Da pra ir fazendo por camadas as verificações @marsolim .Oq
Primeiro definir oq é estar 'online/offline' .
Um retorno de 200 HTTP seria isso? então o meu exemplo atende 100%
Um retorno especifico dentro de uma div html? precisa estudar crawler, recomendo para coisas simples:
http://simplehtmldom.sourceforge.net/
Um retorno de JSON/API/XLM?
Nesse caso da uma olhada na documentação, enfim estamos no escuro sem o retorno/oq está sendo requisitado
já tentou condicionar com if?