Ir para conteúdo

POWERED BY:

Arquivado

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

Jeovane Carvalho

Fopen desabilitado Uol Host

Recommended Posts

Saudações pessoal , venho por meio desta tentar mais uma solução para um outro problema que seria o seguinte:

 

Tenho um site de imobiliária e dentro dele tenho diversos arquivos XML que se integram a cada portal de anúncios de imóveis, sendo que meu sistema exporta todos os meus anúncios através dele , tenho integração em mais de 20 portais. até uns dias atrás os meus XMLS estava funcionando normalmente, e depois disso, alguns portais não estão conseguindo mais importar meus anúncios pelo meu XML e achando que era erro meu ou alguma função obsoleta dentro do meu XML usando o php, sendo que o meu XML é dinâmico, e percebi que eu uso funções de acordo com os padrões do php atual, e vi que alguns portais ao tentarem importar meus anuncios geram esse erro como exemplo abaixo:

 

( ! ) Warning: DOMDocument::load(http://www.jcimoveisbrasil.com/xml_achou_mudou.xml): failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found in C:\wamp\www\html5\teste_DOM.php on line 16

 

 

E notei que o erro vem do meu servidor (infelizmente UOL HOST) por bloquear a diretiva Allow url fopen, eles alegam que nem tentando habilitá-la pelo htaccsess é possível, por que eles dizem que deixam um brecha para *** cod injection ***, e bloquearam no servidor deles, mas se eu contratar uma hospedagem CLOUD que eles oferecem e que é bem mais cara, eu conseguiria habilitá-la ... Eu estou pegando raiva dessa hospedagem por causa disso, e estes portais que estão com problemas para importar meu dados no XML, eles usam o método DOM para se comunicar com o XML , e a bendita uol bloqueia esta função.

 

O que eu queria saber é, ou se existe uma função nativa do php que poderia contornar isso , porque senão eu teria que cancelar meu plano de hospedagem da uol e contratar uma outra que não bloqueie a opção allow url fopen do php, tentei com CURL, mas vi que não tem nada a ver, porque quem teria que mudar a programação seria o portal, e os outros sites que eles tem como parceria recebem o XML normalmente.

 

Este seria meu XML que esta dentro do meu site:

 

http://www.jcimoveisbrasil.com/xml_achou_mudou.xml

 

Vocês acessando a url via navegador, ela funciona normalmente , mas usando esta função que postei abaixo, parecida com a que os portais usam para se comunicar com a URL seria mais ou menos essa que desenvolvi :

<?php
ini_set('display_errors',1);
ini_set('display_startup_erros',1);
error_reporting(E_ALL);
include_once('config.php');
include_once('tags_integrado.php');
$hoje = date('Y-m-d');
?>

<?php

// try this html listing example for all nodes / includes a few getElementsByTagName options:

$doc = new DOMDocument();
$doc->load( 'http://www.jcimoveisbrasil.com/xml_achou_mudou.xml' );

$classificados = $doc->getElementsByTagName( "imovel" );
foreach( $classificados as $imovel ){
      
$codigoreferencia = $imovel->getElementsByTagName( "codigoreferencia" );
$codigoreferencia = $codigoreferencia->item(0)->nodeValue;

$finalidade = $imovel->getElementsByTagName( "finalidade" );
$finalidade = $finalidade->item(0)->nodeValue;

$titulo= $imovel->getElementsByTagName( "titulo" );
$titulo = $titulo->item(0)->nodeValue;

$descricao = $imovel->getElementsByTagName( "descricao" );
$descricao = $descricao->item(0)->nodeValue;

$urlimovel = $imovel->getElementsByTagName( "urlimovel" );
$urlimovel = $urlimovel->item(0)->nodeValue;
 
$dormitorios = $imovel->getElementsByTagName( "dormitorios" );
$dormitorios = $dormitorios->item(0)->nodeValue;
 
$banheiros = $imovel->getElementsByTagName( "banheiros" );
$banheiros = $banheiros->item(0)->nodeValue;
 
$suites = $imovel->getElementsByTagName( "suites" );
$suites = $suites->item(0)->nodeValue;
 
$vagas = $imovel->getElementsByTagName( "vagas" );
$vagas = $vagas->item(0)->nodeValue;
 
$area = $imovel->getElementsByTagName( "area" );
$area = $area->item(0)->nodeValue;
 
$bairro = $imovel->getElementsByTagName( "bairro" );
$bairro = $bairro->item(0)->nodeValue;
 
$cidade = $imovel->getElementsByTagName( "cidade" );
$cidade = $cidade->item(0)->nodeValue;
 
$estado = $imovel->getElementsByTagName( "estado" );
$estado = $estado->item(0)->nodeValue;
 
$pais = $imovel->getElementsByTagName( "pais" );
$pais = $pais->item(0)->nodeValue;
 
$preco = $imovel->getElementsByTagName( "preco" );
$preco = $preco->item(0)->nodeValue;
 
$fotos = $imovel->getElementsByTagName( "fotos" );
$fotos = $fotos->item(0)->nodeValue;

$tipoanunciante = $imovel->getElementsByTagName( "tipoanunciante" );
$tipoanunciante = $tipoanunciante->item(0)->nodeValue;
 
$nomefantasia = $imovel->getElementsByTagName( "nomefantasia" );
$nomefantasia = $nomefantasia->item(0)->nodeValue;
 
$endereco = $imovel->getElementsByTagName( "endereco" );
$endereco = $endereco->item(0)->nodeValue;
 
$bairro = $imovel->getElementsByTagName( "bairro" );
$bairro = $bairro->item(0)->nodeValue;
 

$cidade = $imovel->getElementsByTagName( "cidade" );
$cidade = $cidade->item(0)->nodeValue;

$estado = $imovel->getElementsByTagName( "estado" );
$estado = $estado->item(0)->nodeValue;

$telefone = $imovel->getElementsByTagName( "telefone" );
$telefone = $telefone->item(0)->nodeValue;

$email = $imovel->getElementsByTagName( "email" );
$email = $email->item(0)->nodeValue;

$urlsite = $imovel->getElementsByTagName( "urlsite" );
$urlsite = $urlsite->item(0)->nodeValue;

$urllogo = $imovel->getElementsByTagName( "urllogo" );
$urllogo = $urllogo->item(0)->nodeValue;

echo"
CÓDIGO REFERÊNCIA: $codigoreferencia <br /><br />
URL: ".$urlimovel." <br /><br />
FINALIDADE: ".$finalidade." <br /><br />
TÍTULO ".$titulo." <br /><br />
DESCRIÇÃO: ".$descricao." <br /><br />
DORMITÓRIOS: ".$dormitorios." <br /><br />
BANHEIROS: ".$banheiros." <br /><br />
SUÍTES: ".$suites." <br /><br />
VAGAS: ".$vagas." <br /><br />
ÁREA: ".$area." <br /><br />
BAIRRO: ".$bairro." <br /><br />
CIDADE: ".$cidade." <br /><br />
ESTADO: ".$estado." <br /><br />
PAIS: ".$pais." <br /><br />
PREÇO: ".$preco." <br /><br />
FOTOS: ".$fotos."<br /> <br /><br />
TIPO DE ANUNCIANTE: ".$tipoanunciante." <br /><br />
NOME FANTASIA: ".$nomefantasia." <br /><br />
ENDEREÇO : ".$endereco." <br /><br />
BAIRRO: ".$bairro." <br /><br />
CIDADE: ".$cidade." <br /><br />
ESTADO: ".$estado." <br /><br />
TELEFONE: ".$telefone." <br /><br />
EMAIL: ".$email." <br /><br />
URL-SITE: ".$urlsite." <br /><br />
URL_LOGO: ".$urllogo." <br /><br />
";
}
//------------------------SEPARADOR----------------------------------//
?>

_______________________________________________________________________________________________________________________________________<br /><br />





";
  }




  

?>

E usando essa função localmente para se comunicar com a URL gera o mesmo erro:

 

 

( ! ) Warning: DOMDocument::load(http://www.jcimoveisbrasil.com/xml_achou_mudou.xml): failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found in C:\wamp\www\html5\teste_DOM.php on line 16

E tentando acessar remotamente , SEM CHANCE , dá tela branca , como se não houvesse erros ou nenhuma echo presente para imprimir os dados na tela..

 

 

Desculpem pelo texto longo galera, mas foi para melhor entendimento.. Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Serra obrigado pela resposta, mas no meu caso seria o portal que teria que usar o curl para se comunicar e não eu correto..e outra coisa tem algum outro serviço de hospedagem que você me recomenda que use a diretiva allow url fopen habilitada, ou então têm alguma função que eu possa inserir dentro do meu XML que o sistema do portal que usa a função DOM consiga abrir a url do meu xml, ou não tem nada a ver isso.

Compartilhar este post


Link para o post
Compartilhar em outros sites

A solução mais simples seria de fato usar cURL.

Olá Serra obrigado pela resposta, mas no meu caso seria o portal que teria que usar o curl para se comunicar e não eu correto..e outra coisa tem algum outro serviço de hospedagem que você me recomenda que use a diretiva allow url fopen habilitada, ou então têm alguma função que eu possa inserir dentro do meu XML que o sistema do portal que usa a função DOM consiga abrir a url do meu xml, ou não tem nada a ver isso.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Errado, quem ESTÁ REQUISITANDO deve usar cURL, para o portal (http://www.jcimoveisbrasil.com/xml_achou_mudou.xml), você usar fopen ou cURL, dá na mesma, no servidor chega apenas a requisição da página e o servidor devolve o XML. No caso, o cURL deve ser usado na página teste_DOM.php que ao que parece está no seu localhost....

Compartilhar este post


Link para o post
Compartilhar em outros sites

Errado, quem ESTÁ REQUISITANDO deve usar cURL, para o portal (http://www.jcimoveisbrasil.com/xml_achou_mudou.xml), você usar fopen ou cURL, dá na mesma, no servidor chega apenas a requisição da página e o servidor devolve o XML. No caso, o cURL deve ser usado na página teste_DOM.php que ao que parece está no seu localhost....

Sim Serra até aí eu entendi, mas o portal seria o *achou mudou * e são eles que fazem a comunicação com meu site para importar meus anúncios http://www.jcimoveisbrasil.com/xml_achou_mudou.xml mas eu vou postar o XML em php que estou usando para os portais:

<?php
header('Content-type: application/xml');
include_once('config.php');
include_once('tags_integrado.php'); 

$hoje = date('Y-m-d');
?>
<classificados>
<language>Portuguese</language>
<imoveis>
<?php
/* MONTA CRITERIOS DE BUSCA */ 

$where='i.ativo ="1"';
$max=100000;$inicio=$max*$inicio;
$pgs=ceil($total/$max);
$sql=$MySQLi->query("SELECT i.id, i.foto_exibicao,i.foto_titulo,i.foto_descricao,i.mapa,i.latitude,i.longitude,i.cep,i.area_construida,
i.area_total,i.valor_condominio,i.valor_iptu,i.valor_prestacao,i.valor,i.quartos,i.suites,i.banheiros,i.garagem,i.codigo,i.data,i.msg,t.tipo_nome,n.tipo AS negocio,c.cidade,c.uf,b.bairro FROM imoveis i INNER JOIN negocio_tipo n ON(n.id = i.id_negocio_tipo)INNER JOIN imoveis_tipo t ON(t.id = i.id_tipo_imovel)
INNER JOIN cidades c ON (c.id = i.id_cidade)INNER JOIN bairros b ON (b.id = i.bairro)WHERE ".$where." ORDER BY id ASC LIMIT ".$inicio.",".$max."")or print(mysqli_error());while($linha= mysqli_fetch_array($sql)){
$id=$linha['id'];
$negocio=$linha['negocio'];
$dormitorios=$linha['quartos'];
$suites=$linha['suites'];
$banheiros=$linha['banheiros'];
$garagem=$linha['garagem'];
$area_construida=$linha['area_construida'];
$area_total=$linha['area_total'];
$msg=$linha['msg'];
$foto_titulo=$linha['foto_titulo'];
$foto_descricao=$linha['foto_descricao'];
$valor_condominio=$linha['valor_condominio'];
$valor_iptu=$linha['valor_iptu'];
$valor_prestacao=$linha['valor_prestacao'];
$foto_exibicao=$linha['foto_exibicao'];
$latitude=$linha['latitude'];
$longitude=$linha['longitude'];
$data=$linha['data'];
$tipos=$linha['tipo_nome'];
$tipo=$tipos;
$tipo=strtolower(str_replace(" ","-",strtr(utf8_decode(trim($tipo)),utf8_decode("áàãâéêíóôõúüñçÁÀÃÂÉÊÍÓÔÕÚÜÑÇ"),"aaaaeeiooouuncAAAAEEIOOOUUNC-")));
$bairros=$linha['bairro'];
$bairro=$bairros;$bairro=strtolower( str_replace(" ","-",strtr(utf8_decode(trim($bairro)),utf8_decode("áàãâéêíóôõúüñçÁÀÃÂÉÊÍÓÔÕÚÜÑÇ"),"aaaaeeiooouuncAAAAEEIOOOUUNC-")));$cidades=$linha['cidade'];
$cidade=$cidades;
$cidade=strtolower(str_replace(" ","-",strtr(utf8_decode(trim($cidade)),utf8_decode("áàãâéêíóôõúüñçÁÀÃÂÉÊÍÓÔÕÚÜÑÇ"),"aaaaeeiooouuncAAAAEEIOOOUUNC-")));
$fotos=$linha['foto'];
$fotos_galeria="http://www.jcimoveisbrasil.com/img_imoveis/album/".$fotos."";
if($linha['area_construida']==''||empty($linha['area_construida'])){
$area_construida='Consulte-nos';
}else{
$area_construida=''.number_format($linha['area_construida'],0,',','');}
if($linha['area_total']==''||empty(
$linha['area_total'])){
$area_total='Consulte-nos';
}else{
$area_total=''.number_format(
$linha['area_construida'],0,',','');}
if($linha['valor_condominio']==''||empty($linha['valor_condominio'])){$valor_condominio='Consulte-nos';
}else{
$valor_condominio=''.number_format( $linha['valor_condominio'],0,',','');
}
if($linha['valor_iptu']=='0.00'||empty($linha['valor_iptu'])){
$valor_iptu='Consulte-nos';
}else{$valor_iptu=''.number_format($linha['valor_iptu'],0,',','');}if($linha['valor']=='0.00'||empty($linha['valor'])){$valor='0.00';}else{$valor=''.number_format($linha['valor'],0,'','');
}

echo"<imovel><codigoreferencia><![CDATA[".$id."]]></codigoreferencia>
<urlimovel><![CDATA[http://www.jcimoveisbrasil.com/imovel/".$tipo."/".$bairro."/".$cidade."/".$linha['id']."]]></urlimovel>
<finalidade><![CDATA[Venda]]></finalidade><tipo><![CDATA[casa]]></tipo>
<titulo><![CDATA[".$foto_titulo."]]></titulo>
<descricao><![CDATA[".strip_tags(trim(str_replace(' ','',$msg)))."]]></descricao>
<dormitorios><![CDATA[".$dormitorios."]]></dormitorios>
<banheiros><![CDATA[".$banheiros."]]></banheiros>
<suites><![CDATA[".$suites."]]></suites>
<vagas><![CDATA[".$garagem."]]></vagas>
<area><![CDATA[".$area_construida."]]></area>
<bairro><![CDATA[".$bairro."]]></bairro>
<cidade><![CDATA[".$cidade."]]></cidade>
<estado><![CDATA[SP]]></estado>
<pais><![CDATA[Brasil]]></pais>
<preco><![CDATA[".$valor."]]></preco>";
?>
<fotos>
<?php
$var="\n";
$max_2=10;$inicio_2=$max_2*$inicio;$pgs=ceil($total/$max);
$sqll=$MySQLi->query("SELECT foto FROM fotos AS foto WHERE id_imovel=".$id." ORDER BY id DESC LIMIT ".$inicio_2.",".$max_2."")OR trigger_error($MySQLi->error, E_USER_ERROR);while($linhas=mysqli_fetch_array($sqll)){$fotos=$linhas['foto'];
$fotos_galeria="http://www.jcimoveisbrasil.com/img_imoveis/album/".$fotos."";
echo "<![CDATA[".$fotos_galeria."]]>";

}
?>
</fotos>
<?php
echo'
<anunciante>
<tipoanunciante><![CDATA[imobiliaria]]></tipoanunciante>
<nomefantasia><![CDATA[JC IMÓVEIS BRASIL]]></nomefantasia>
<endereco><![CDATA[Rua Victório Santim , 889 ]]></endereco>
<bairro><![CDATA[Itaquera]]></bairro>
<cidade><![CDATA[São Paulo]]></cidade>
<estado><![CDATA[SP]]></estado>
<telefone><![CDATA[(11) 2056-4012]]></telefone>
<email><![CDATA[jcimoveisbrasil@hotmail.com]]></email>
<urlsite><![CDATA[http://www.jcimoveisbrasil.com]]></urlsite>
<urllogo><![CDATA[http://www.jcimoveisbrasil.com/images/jclogo.png]]></urllogo>
</anunciante>';
?>
<?php

echo "<latitude><![CDATA[".$latitude."]]></latitude>
<longitude><![CDATA[".$longitude."]]></longitude>";?>
<?php echo"</imovel>".PHP_EOL."";}?>
</imoveis>
</classificados>

E com esse XML acima eu consigo exportar meus anúncios para quase todos os portais e menos alguns que esta dando o erro acima do post #1, e esses portais usam o método DOM para fazer a requisição ..e o primeiro código que postei eu apenas coloquei de exemplo para imprimir o erro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ok, então inverta o que eu disse, quem tem que alterar o script é o portal, pois o "problema" está no servidor dele, você não tem nenhuma ação que pode ser feito para contornar isto.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se o arquivo que retorna o xml é um PHP, entao pq você chama um .xml?

a nao ser que você tenha uma regra rewrite no seu .htacces, o arquivo xml_achou_mudou.xml nao existe por isso o erro 404. O que existe é o xml_achou_mudou.php eu acho

 

troque isso

$doc->load( 'http://www.jcimoveisbrasil.com/xml_achou_mudou.xml' );

por

$doc->load( 'http://www.jcimoveisbrasil.com/xml_achou_mudou.php' );

Compartilhar este post


Link para o post
Compartilhar em outros sites

ELETRONIC obrigado pela resposta e sim eu uso a regra no .htaccess para urls amigáveis, mas meu problema nõa é este e como O Serra disse acho que o portal teria que mudar a linguagem para a importação do XML.. Mesmo usando php retorna mesmo erro...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ok, então inverta o que eu disse, quem tem que alterar o script é o portal, pois o "problema" está no servidor dele, você não tem nenhuma ação que pode ser feito para contornar isto.

Então Serra agora me diga, o portal deles tem outras empresas que usam o XML e se comunicam e é feito a importação sem erros vou dar um exemplo do xml que ele me passaram segue o link abaixo:

 

http://www.jgodoiimoveis.com.br/exportacao/achoumudou.xml

 

O portal me passou esse link deste XML e eles me disseram que a importação é feita normalmente, e na minha hospedagem que hoje me arrependo de ter contratado a UOL HOST, minha plataforma é linux e roda o php 5.6 que esta desabilitada a diretiva allow url fopen por definitivo, nem pelo .htaccess é possível habilitá-la, não sei se é por isso que não esta havendo comunicação usando CURL ou DOM...

 

A mensagem abaixo foi uma pessoa do suporte do portal que me enviou e foi o erro que o portal aponto quando tentou fazer uma requisição com o meu XML


Fiz um teste agora com o wget e funcionou pelo jeito não é o ip, mas veja o erro:

 

Warning: DOMDocument::load(http://www.jcimoveisbrasil.com/xml_achou_mudou.xml): failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então Serra agora me diga, o portal deles tem outras empresas que usam o XML e se comunicam e é feito a importação sem erros vou dar um exemplo do xml que ele me passaram segue o link abaixo:

Infelizmente aqui a minha opinião seria baseada em achismo, existem várias possibilidades, por exemplo, instalações diferentes com configurações do PHP diferentes em cada site/whm da máquina.

 

O portal me passou esse link deste XML e eles me disseram que a importação é feita normalmente, e na minha hospedagem que hoje me arrependo de ter contratado a UOL HOST, minha plataforma é linux e roda o php 5.6 que esta desabilitada a diretiva allow url fopen por definitivo, nem pelo .htaccess é possível habilitá-la, não sei se é por isso que não esta havendo comunicação usando CURL ou DOM...

Allow URL Fopen afeta apenas o fpen para URL externas, é provável quem o DOM load utilize isto. Em tese cURL não é afetado, exatamente por isto eu nunca uso fopen, assim consigo garantir que se cURL estiver ativo no servidor vou conseguir fazer requisições externas sem problemas.

 

Qual foi a sua tentativa com cURL?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Compartilhar este post


Link para o post
Compartilhar em outros sites

Infelizmente aqui a minha opinião seria baseada em achismo, existem várias possibilidades, por exemplo, instalações diferentes com configurações do PHP diferentes em cada site/whm da máquina.

 

Allow URL Fopen afeta apenas o fpen para URL externas, é provável quem o DOM load utilize isto. Em tese cURL não é afetado, exatamente por isto eu nunca uso fopen, assim consigo garantir que se cURL estiver ativo no servidor vou conseguir fazer requisições externas sem problemas.

 

Qual foi a sua tentativa com cURL?

Então antes a importação era feita normalmente por esse mesmo portal, e foi só agora que este problema vem a acontecer, e acho que eles fizeram alguma coisa no servidor do portal ou então a Uol host esta bloqueando alguma coisa, por exemplo me tira uma dúvida , se a diretiva allow url fopen estiver desabilitada , eu não consigo acessar a url com dom vou dar um exemplo abaixo:

 

 

Eu testei localmente assim com a url de um outro cliente do portal veja:

<?php
ini_set('display_errors',1);
ini_set('display_startup_erros',1);
error_reporting(E_ALL);
include_once('config.php');
include_once('tags_integrado.php');
$hoje = date('Y-m-d');
?>

<?php

// try this html listing example for all nodes / includes a few getElementsByTagName options:

$doc = new DOMDocument();
$doc->load( 'http://www.jgodoiimoveis.com.br/exportacao/achoumudou.xml' );

$classificados = $doc->getElementsByTagName( "imovel" );
foreach( $classificados as $imovel ){
      
$codigoreferencia = $imovel->getElementsByTagName( "codigoreferencia" );
$codigoreferencia = $codigoreferencia->item(0)->nodeValue;

$finalidade = $imovel->getElementsByTagName( "finalidade" );
$finalidade = $finalidade->item(0)->nodeValue;

$titulo= $imovel->getElementsByTagName( "titulo" );
$titulo = $titulo->item(0)->nodeValue;

$descricao = $imovel->getElementsByTagName( "descricao" );
$descricao = $descricao->item(0)->nodeValue;

$urlimovel = $imovel->getElementsByTagName( "urlimovel" );
$urlimovel = $urlimovel->item(0)->nodeValue;
 
$dormitorios = $imovel->getElementsByTagName( "dormitorios" );
$dormitorios = $dormitorios->item(0)->nodeValue;
 
$banheiros = $imovel->getElementsByTagName( "banheiros" );
$banheiros = $banheiros->item(0)->nodeValue;
 
$suites = $imovel->getElementsByTagName( "suites" );
$suites = $suites->item(0)->nodeValue;
 
$vagas = $imovel->getElementsByTagName( "vagas" );
$vagas = $vagas->item(0)->nodeValue;
 
$area = $imovel->getElementsByTagName( "area" );
$area = $area->item(0)->nodeValue;
 
$bairro = $imovel->getElementsByTagName( "bairro" );
$bairro = $bairro->item(0)->nodeValue;
 
$cidade = $imovel->getElementsByTagName( "cidade" );
$cidade = $cidade->item(0)->nodeValue;
 
$estado = $imovel->getElementsByTagName( "estado" );
$estado = $estado->item(0)->nodeValue;
 
$pais = $imovel->getElementsByTagName( "pais" );
$pais = $pais->item(0)->nodeValue;
 
$preco = $imovel->getElementsByTagName( "preco" );
$preco = $preco->item(0)->nodeValue;
 
$fotos = $imovel->getElementsByTagName( "fotos" );
$fotos = $fotos->item(0)->nodeValue;

$tipoanunciante = $imovel->getElementsByTagName( "tipoanunciante" );
$tipoanunciante = $tipoanunciante->item(0)->nodeValue;
 
$nomefantasia = $imovel->getElementsByTagName( "nomefantasia" );
$nomefantasia = $nomefantasia->item(0)->nodeValue;
 
$endereco = $imovel->getElementsByTagName( "endereco" );
$endereco = $endereco->item(0)->nodeValue;
 
$bairro = $imovel->getElementsByTagName( "bairro" );
$bairro = $bairro->item(0)->nodeValue;
 

$cidade = $imovel->getElementsByTagName( "cidade" );
$cidade = $cidade->item(0)->nodeValue;

$estado = $imovel->getElementsByTagName( "estado" );
$estado = $estado->item(0)->nodeValue;

$telefone = $imovel->getElementsByTagName( "telefone" );
$telefone = $telefone->item(0)->nodeValue;

$email = $imovel->getElementsByTagName( "email" );
$email = $email->item(0)->nodeValue;

$urlsite = $imovel->getElementsByTagName( "urlsite" );
$urlsite = $urlsite->item(0)->nodeValue;

$urllogo = $imovel->getElementsByTagName( "urllogo" );
$urllogo = $urllogo->item(0)->nodeValue;

echo"
CÓDIGO REFERÊNCIA: $codigoreferencia <br /><br />
URL: ".$urlimovel." <br /><br />
FINALIDADE: ".$finalidade." <br /><br />
TÍTULO ".$titulo." <br /><br />
DESCRIÇÃO: ".$descricao." <br /><br />
DORMITÓRIOS: ".$dormitorios." <br /><br />
BANHEIROS: ".$banheiros." <br /><br />
SUÍTES: ".$suites." <br /><br />
VAGAS: ".$vagas." <br /><br />
ÁREA: ".$area." <br /><br />
BAIRRO: ".$bairro." <br /><br />
CIDADE: ".$cidade." <br /><br />
ESTADO: ".$estado." <br /><br />
PAIS: ".$pais." <br /><br />
PREÇO: ".$preco." <br /><br />
FOTOS: ".$fotos."<br /> <br /><br />
TIPO DE ANUNCIANTE: ".$tipoanunciante." <br /><br />
NOME FANTASIA: ".$nomefantasia." <br /><br />
ENDEREÇO : ".$endereco." <br /><br />
BAIRRO: ".$bairro." <br /><br />
CIDADE: ".$cidade." <br /><br />
ESTADO: ".$estado." <br /><br />
TELEFONE: ".$telefone." <br /><br />
EMAIL: ".$email." <br /><br />
URL-SITE: ".$urlsite." <br /><br />
URL_LOGO: ".$urllogo." <br /><br />
";
}
//------------------------SEPARADOR----------------------------------//
?>

_______________________________________________________________________________________________________________________________________<br /><br />





";
  }




  

?>

Pode ver no script acima a url que estou chamando , e eu testando em localhost eu consigo acessá-la e imprimir os dados do XML na tela mas com a minha url do mei site não veja abaixo o mesmo script mas com a minha url:

<?php
ini_set('display_errors',1);
ini_set('display_startup_erros',1);
error_reporting(E_ALL);
include_once('config.php');
include_once('tags_integrado.php');
$hoje = date('Y-m-d');
?>

<?php

// try this html listing example for all nodes / includes a few getElementsByTagName options:

$doc = new DOMDocument();
$doc->load( 'http://www.jcimoveisbrasil.com/xml_achou_mudou.xml' );

$classificados = $doc->getElementsByTagName( "imovel" );
foreach( $classificados as $imovel ){
      
$codigoreferencia = $imovel->getElementsByTagName( "codigoreferencia" );
$codigoreferencia = $codigoreferencia->item(0)->nodeValue;

$finalidade = $imovel->getElementsByTagName( "finalidade" );
$finalidade = $finalidade->item(0)->nodeValue;

$titulo= $imovel->getElementsByTagName( "titulo" );
$titulo = $titulo->item(0)->nodeValue;

$descricao = $imovel->getElementsByTagName( "descricao" );
$descricao = $descricao->item(0)->nodeValue;

$urlimovel = $imovel->getElementsByTagName( "urlimovel" );
$urlimovel = $urlimovel->item(0)->nodeValue;
 
$dormitorios = $imovel->getElementsByTagName( "dormitorios" );
$dormitorios = $dormitorios->item(0)->nodeValue;
 
$banheiros = $imovel->getElementsByTagName( "banheiros" );
$banheiros = $banheiros->item(0)->nodeValue;
 
$suites = $imovel->getElementsByTagName( "suites" );
$suites = $suites->item(0)->nodeValue;
 
$vagas = $imovel->getElementsByTagName( "vagas" );
$vagas = $vagas->item(0)->nodeValue;
 
$area = $imovel->getElementsByTagName( "area" );
$area = $area->item(0)->nodeValue;
 
$bairro = $imovel->getElementsByTagName( "bairro" );
$bairro = $bairro->item(0)->nodeValue;
 
$cidade = $imovel->getElementsByTagName( "cidade" );
$cidade = $cidade->item(0)->nodeValue;
 
$estado = $imovel->getElementsByTagName( "estado" );
$estado = $estado->item(0)->nodeValue;
 
$pais = $imovel->getElementsByTagName( "pais" );
$pais = $pais->item(0)->nodeValue;
 
$preco = $imovel->getElementsByTagName( "preco" );
$preco = $preco->item(0)->nodeValue;
 
$fotos = $imovel->getElementsByTagName( "fotos" );
$fotos = $fotos->item(0)->nodeValue;

$tipoanunciante = $imovel->getElementsByTagName( "tipoanunciante" );
$tipoanunciante = $tipoanunciante->item(0)->nodeValue;
 
$nomefantasia = $imovel->getElementsByTagName( "nomefantasia" );
$nomefantasia = $nomefantasia->item(0)->nodeValue;
 
$endereco = $imovel->getElementsByTagName( "endereco" );
$endereco = $endereco->item(0)->nodeValue;
 
$bairro = $imovel->getElementsByTagName( "bairro" );
$bairro = $bairro->item(0)->nodeValue;
 

$cidade = $imovel->getElementsByTagName( "cidade" );
$cidade = $cidade->item(0)->nodeValue;

$estado = $imovel->getElementsByTagName( "estado" );
$estado = $estado->item(0)->nodeValue;

$telefone = $imovel->getElementsByTagName( "telefone" );
$telefone = $telefone->item(0)->nodeValue;

$email = $imovel->getElementsByTagName( "email" );
$email = $email->item(0)->nodeValue;

$urlsite = $imovel->getElementsByTagName( "urlsite" );
$urlsite = $urlsite->item(0)->nodeValue;

$urllogo = $imovel->getElementsByTagName( "urllogo" );
$urllogo = $urllogo->item(0)->nodeValue;

echo"
CÓDIGO REFERÊNCIA: $codigoreferencia <br /><br />
URL: ".$urlimovel." <br /><br />
FINALIDADE: ".$finalidade." <br /><br />
TÍTULO ".$titulo." <br /><br />
DESCRIÇÃO: ".$descricao." <br /><br />
DORMITÓRIOS: ".$dormitorios." <br /><br />
BANHEIROS: ".$banheiros." <br /><br />
SUÍTES: ".$suites." <br /><br />
VAGAS: ".$vagas." <br /><br />
ÁREA: ".$area." <br /><br />
BAIRRO: ".$bairro." <br /><br />
CIDADE: ".$cidade." <br /><br />
ESTADO: ".$estado." <br /><br />
PAIS: ".$pais." <br /><br />
PREÇO: ".$preco." <br /><br />
FOTOS: ".$fotos."<br /> <br /><br />
TIPO DE ANUNCIANTE: ".$tipoanunciante." <br /><br />
NOME FANTASIA: ".$nomefantasia." <br /><br />
ENDEREÇO : ".$endereco." <br /><br />
BAIRRO: ".$bairro." <br /><br />
CIDADE: ".$cidade." <br /><br />
ESTADO: ".$estado." <br /><br />
TELEFONE: ".$telefone." <br /><br />
EMAIL: ".$email." <br /><br />
URL-SITE: ".$urlsite." <br /><br />
URL_LOGO: ".$urllogo." <br /><br />
";
}
//------------------------SEPARADOR----------------------------------//
?>

Então no meu caso é como se o meu servidor barrasse o acesso a minha url pelo script php..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Este post é antigo e fiz uma reclamação no meu host dentro da UOL , e só posso fazer essa alteração se estiver usando o PHP 5.2.17 , mas como eu gosto de manter meus códigos atualizados e uso a última versão até esta data de 04/12/2015 uso o PHP 5.6, e nesta versão a UOL desabilitou definitivamente essa função, e nem pensar em usar .htaccess , nõa funfa mais..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Infelizmente aqui a minha opinião seria baseada em achismo, existem várias possibilidades, por exemplo, instalações diferentes com configurações do PHP diferentes em cada site/whm da máquina.

 

Allow URL Fopen afeta apenas o fpen para URL externas, é provável quem o DOM load utilize isto. Em tese cURL não é afetado, exatamente por isto eu nunca uso fopen, assim consigo garantir que se cURL estiver ativo no servidor vou conseguir fazer requisições externas sem problemas.

 

Qual foi a sua tentativa com cURL?

Serra obrigado pela ajuda , mas eu e o cara do suporte conseguimos resolver o problema que a MER...... do servidor UOL HOST barra a transmissão e bloqueia a requisição feita pelo DOM, REQUEST, ou até FOPEN, conseguimos resolver da seguinte maneira:

 

Antes de iniciar a função do código tanto fopen , tanto DOM ou Request, é só inserir esse código que seria o USER AGENT, segue abaixo:

$opts=array('http'=>array('user_agent'=>'AchouMudouIntegracao',));
 
$context = stream_context_create($opts);
libxml_set_streams_context($context);                                            

ATENÇÃO:

 

Este código acima funciona apenas para requisição DOM ou REQUEST, depois que fui ver isso:

 

Mas testei esse código abaixo e deu certo em todas as funções sem dar aquele erro de requisição HTTP request failed! HTTP/1.1 404 :

<?php

ini_set('user_agent','MSIE 4\.0b2;');
?>

 

 

Na hora que coloquei este código no topo do meu código, e quando atualizei, na mesma hora consegui fazer a requisição sem erro algum, graças a DEUS e ao meu empenho e com a ajuda fundamental de vocês consegui resolver , e para quem estiver o mesmo problema é só alterar dentro das aspas simples onde esta o nome do portal para o nome do portal o site que queira fazer uma requisição...

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por ILR master
      Tudo bem pessoal?
       
      No código abaixo, estou fazendo uma consulta nas tabelas, banners e banners_referencia
      Meu objetivo é trazer resultados com valores iguais ao nome da cidade declarada na $cidade ou resultados com a referencia Total.
      O problema é que está trazendo todos os resultados. Tenho 10 linhas, 1 com o nome da cidade e duas com o valor Total, então o resultado teria que ser de apenas 3 linhas, mas mostra tudo.
       
      $banner = "SELECT A.*, B.* FROM banners A, banners_referencia B WHERE B.cod_referencia = A.cod_referencia AND A.cidade = '$cidade' OR B.referencia = 'Total' ORDER BY RAND()";
      $banner = mysqli_query($conexao, $banner) or die ("Banner não encontrado");
      while($busca= mysqli_fetch_array($banner)){
          print $busca['cidade'].'<br>';
      };
       
      Alguém consegue me ajudar?
    • Por Rafael_Ferreira
      Não consigo carregar a imagem do captcha do meu formulário. Foi testado com o xampp e easyphp. Também não carregou a imagem de outros captcha. 
       
       
    • Por luiz monteiro
      Olá, tudo bem?
       
      Estou melhorando meu conhecimento em php e mysql e, me deparei com o seguinte. A tabela da base de dados tem um campo do tipo varchar(8) o qual armazena números. Eu não posso alterar o tipo desse campo. O que preciso é fazer um select para retornar o números que contenham zeros a direita ou a esquerda.
      O que tentei até agora
       
      Ex1
      $busca = $conexao->prepare("select campo form tabela where (campo = :campo) ");
      $busca->bindParam('campo', $_REQUEST['campo_form']);
       
      Se a direita da string $_REQUEST['campo_form'] termina ou inicia com zero ou zeros, a busca retorna vazio.
      Inseri dados numéricos, da seguinte maneira para testar: 01234567;  12345670: 12345678: 12340000... entre outros nessa coluna. Todos os valores que não terminam ou não iniciam com zero ou zeros, o select funciona.
       
       
      Ex2
      $busca = $conexao->prepare("select campo form tabela where (campo = 0340000) ");
      Esse número está cadastrado, mas não retorna.
       
      Ex3
      $busca = $conexao->prepare("select campo form tabela where (campo = '02340001' ) ");
      Esse número está cadastrado, mas não retorna.
       
       
      Ex4
      $busca = $conexao->prepare("select campo form tabela where (campo like 2340000) ");
      Esse número está cadastrado, mas não retorna.
       
      Ex5
      $busca = $conexao->prepare("select campo form tabela where (campo like '12340000') ");
      Esse número está cadastrado, mas não retorna.
       
      Ex6
      $busca = $conexao->prepare("select campo form tabela where (campo like '"12340000"' ) ");
      Esse número está cadastrado, mas não retorna.
       
       
      Ex7
      $busca = $conexao->prepare("select campo form tabela where (campo like :campo) ");
      $busca->bindParam('campo', $_REQUEST['campo_form'])
      Não retorna dados.
       
      O  $_REQUEST['campo_form'] é envio via AJAX de um formulário. 
      Usei o gettype para verificar o post, e ele retorna string.
      Fiz uma busca com número 12345678 para verificar o que o select retorna, e também retrona como string.
       
      Esse tipo de varchar foi usado porque os números que serão gravados nesse campo,  terão zeros a direita ou na esquerda. Os tipos number do mysql não gravam zeros, então estou usando esse. O problema é a busca.
      Agradeço desde já.
       
       
    • Por daemon
      Boa tarde,
       
      Eu tenho uma rotina que faz uma leitura do arquivo .xml de vários sites.

      Eu consigo pegar o tópico e a descrição, e mostrar a imagem que esta na pagina do link.
      Para isso utilizo esta função:
      function getPreviewImage($url) { // Obter o conteúdo da página $html = file_get_contents($url); // Criar um novo objeto DOMDocument $doc = new DOMDocument(); @$doc->loadHTML($html); // Procurar pela tag meta og:image $tags = $doc->getElementsByTagName('meta'); foreach ($tags as $tag) { if ($tag->getAttribute('property') == 'og:image') { return $tag->getAttribute('content'); } } // Se não encontrar og:image, procurar pela primeira imagem na página $tags = $doc->getElementsByTagName('img'); if ($tags->length > 0) { return $tags->item(0)->getAttribute('src'); } // Se não encontrar nenhuma imagem, retornar null return null; } // Uso: $url = "https://example.com/article"; $imageUrl = getPreviewImage($url); if ($imageUrl) { echo "<img src='$imageUrl' alt='Preview'>"; } else { echo "Nenhuma imagem encontrada"; }  
      Mas estou com um problema, esta funcão funciona quando coloco em uma pagina de teste.php. Preciso mostrar em uma página inicial diversas fotos de todos os links. (No caso acima só funciona 1).
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.