Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
/applications/core/interface/imageproxy/imageproxy.php?img=http://forum.imasters.com.br/public/style_emoticons/default/dry.gif&key=d3f178eaa22295ab50b10653bb81e7e3d175f587e93266afc21cf7e918341a41" alt="Imagem Postada" />
Já estou um tempo empacado aqui nos códigos com esse problema...
O comando file_exists tá sempre me retornando false...
Estou verificando pela URL pra ver se a imagem existe...
Mas... Sempre tá me retornando que não existe :S
Segue o trecho de código; PS: O file_exists está na 5ª linha
if(isset($_POST['url'])){ $url = $_POST['url']; $eimg = "/^(.*).(gif|jpg|jpeg|png|bmp|dib|tif|tiff)$"; if(preg_match("$eimg".'/i', $url) | preg_match("$eimg".'/'.'/i', $url)){ if(file_exists($url)){ $tamimg = getimagesize($url); if($tamimg[0] > 60 | $tamimg[1] > 60){ echo voltaFormlogin('Imagem muito grande, ela deve ter no máximo 60px X 60px'); }else{ $verifica = ("update users set urlimg = '$url' where user = '$user';"); $query = "SET NAMES 'utf8';"; $utf = mysql_query("$query"); $conta = mysql_query("$verifica"); echo 'Avatar atualizado<br />Clique <a href="javascript:window.parent.location='."'login.php'".'">Aqui</a> e logue novamente'; } }else{ echo voltaFormlogin('O arquivo não foi encontrado'); } }else{ if($_POST['url'] == ''){ echo voltaFormlogin('Preencha o campo com a URL da imagem'); }else{ echo voltaFormlogin('As únicas extensões possíveis são: gif, jpg, jpeg, png, bmp, dib, tif e tiff'); } }>
Qual o ambiente? Windows? Linux?
o $url contém o Path para o arquivo? Exemplo '/imagens/arquivo.jpg'
Ou, o arquivo fica no mesmo local que o script?
Qual o retorno de var_dump($url) ?
Windows, Wampserver 2.0;a $url tem a URL que o usuário informa para imagem no estilo 'http://www.google.com.br/intl/en_com/images/srpr/logo1w.png';
vardump($url) retorna:
para:'http://www.teste.com.br/imagem.gif' (esta imagem não existe)
string(34) "http://www.teste.com.br/imagem.gif"
para:'http://www.google.com.br/intl/en_com/images/srpr/logo1w.png' (esta imagem existe)
string(59) "http://www.google.com.br/intl/en_com/images/srpr/logo1w.png"
para:'a.gif' (esta estaria no formato errado de preencher o campo, já que teria que ser uma URL de fora)
string(5) "a.gif"
file_exists não funciona com requisições remotas.
Segue aí uma implementação para o que você quer:
function url_exists($url) {
// Version 4.x supported
$handle = curl_init($url);
if (false === $handle)
{
return false;
}
curl_setopt($handle, CURLOPT_HEADER, false);
curl_setopt($handle, CURLOPT_FAILONERROR, true); // this works
curl_setopt($handle, CURLOPT_HTTPHEADER, Array("User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.15) Gecko/20080623 Firefox/2.0.0.15")); // request as if Firefox
curl_setopt($handle, CURLOPT_NOBODY, true);
curl_setopt($handle, CURLOPT_RETURNTRANSFER, false);
$connectable = curl_exec($handle);
curl_close($handle);
return $connectable;
}Funcionou agora... mas..
>
Notice: Use of undefined constant CURLOPT_FAILonerror - assumed 'CURLOPT_FAILonerror' in C:\Server\www\alfa\mudarpessoal.php on line 45
Warning: curl_setopt() expects parameter 2 to be long, string given in C:\Server\www\alfa\mudarpessoal.php on line 45
Tá retornando este erro tanto pra uma imagem que exista, quanto para uma imagem que não exista...
Mas está funcionando, atualizando no BD quando existe, não atualizando quando não existe...
PS: linha 45:
curl_setopt($handle, CURLOPT_FAILonerror, true); // this works
Concertei, era só aquele pedaço do código que estava em minúsculo ali no 'CURLOPT_FAILonerror' que deveria estar em maiúsculo; :clap:
Se alguém precisar;
function url_exists($url) { $handle = curl_init($url); if (false === $handle) { return false; } curl_setopt($handle, CURLOPT_HEADER, false); curl_setopt($handle, CURLOPT_FAILONERROR, true); curl_setopt($handle, CURLOPT_HTTPHEADER, Array("User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.15) Gecko/20080623 Firefox/2.0.0.15")); curl_setopt($handle, CURLOPT_NOBODY, true); curl_setopt($handle, CURLOPT_RETURNTRANSFER, false); $connectable = curl_exec($handle); curl_close($handle); return $connectable;}PS: editei, mas quando salvo aparece em minúsculo de novo :S quando clico em editar aparece em maiúsculo de volta (OMG) /applications/core/interface/imageproxy/imageproxy.php?img=http://forum.imasters.com.br/public/style_emoticons/default/tongue.gif&key=8d11c3c7c03c7a5a294e250694d100848a0423dc34ef2af8d774f49d1b969fde" alt="Imagem Postada" />
Qual o ambiente? Windows? Linux?
o $url contém o Path para o arquivo? Exemplo '/imagens/arquivo.jpg'
Ou, o arquivo fica no mesmo local que o script?
Qual o retorno de var_dump($url) ?