Ir para conteúdo

POWERED BY:

Arquivado

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

Holt

[Resolvido] file_exists sempre retornando false

Recommended Posts

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');						}					}

Compartilhar este post


Link para o post
Compartilhar em outros sites

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) ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

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"

Compartilhar este post


Link para o post
Compartilhar em outros sites

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;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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) Imagem Postada

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.