Ir para conteúdo

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 violin101
      Caros amigos, saudações.
       
      Gostaria de tirar uma dúvida com os amigos.
       
      Quando programava em DOS. utilizava algumas teclas de atalho para: SALVAR / EDITAR / EXCLUIR / IMPRIMIR.
      Por exemplo:
      Salvar ----> ALT+S
      Editar ----> ALT+E
      Excluir --> ALT+X
      Imprimir -> ALT+I

      no PHP tem como colocar esses ATALHOS nos button, para o usuário trabalhar com esses atalhos e como seria ?

      grato,
       
      Cesar
    • Por violin101
      Caros Amigos, saudações.
       
      Por favor, me perdoa em postar uma dúvida.
       
      Preciso criar uma Rotina onde o usuário possa buscar na Base de Dados de Produtos, tanto por Código e Descrição, ou seja:
      - caso o usuário digita o Código, mostra os dados do Produto.
      - caso o usuário digita a Descrição, mostra os dados do Produto
       
      Fiz uma Rotina, onde o usuário digita a DESCRIÇÃO com a função AUTOCOMPLETE.    <=== está funcionando certinho.
       
      Minha dúvida é como faço para DIGITAR o Código e mostrar os dados também.
       
      o meu AutoComplete na MODEL está assim.
      public function autoCompleteProduto($q){ $this->db->select('*' ) ->from('produtos') ->where('produtos.statusProd',1) ->like('descricao', $q) ->limit(5) ->order_by('descricao', 'ASC'); $query = $this->db->get(); if ($query->num_rows() > 0) { foreach ($query->result_array() as $row) { $row_set[] = ['label' => str_pad($row['idProdutos'], '5', '0', STR_PAD_LEFT).' - '.$row['descricao'], 'id' => $row['idProdutos'], 'descricao' => $row['descricao'], 'cod_interno' => $row['cod_interno'], 'prd_unid' => $row['prd_unid'], 'estoque_atual' => $row['estoque_atual'] ]; } echo json_encode($row_set); } }  
       
      no CONTROLLER está assim:
      public function autoCompleteProduto() { $this->load->model('estoque/lancamentos_model'); if (isset($_GET['term'])) { $q = strtolower($_GET['term']); $this->lancamentos_model->autoCompleteProduto($q); } }  
       
      na VIEW está assim:
      <div class="col-md-10"> <label for="idProdutos">Produto:</label> <input type="hidden" name="idProdutos" id="idProdutos"> <input type="text" class="form-control" id="descricao" name="descricao" style="font-size:15px; font-weight:bold;" placeholder="Pesquisar por descrição do produto" disabled> </div>  
      VIEW + JAVASCRIPT
       
      //Função para trazer os Dados pelo o AutoComplete. function resolveAutocomplete() { $("#descricao").autocomplete({ source: "<?php echo base_url(); ?>estoque/lancamentos/autoCompleteProduto/", minLength: 2, select: function (event, ui) { $("#idProdutos").val(ui.item.id); $("#cod_interno").val(ui.item.cod_interno); $("#descricao").val(ui.item.descricao); $("#prd_unid").val(ui.item.prd_unid); $("#estoque_atual").val(ui.item.estoque_atual); $("#qtde").focus(); } }); } // inicia o autocomplete resolveAutocomplete();  
      Grato,
       
      Cesar
    • Por belann
      Olá!
       
      Estou tentando criar um projeto laravel e está dando o seguinte erro 
      curl error 60 while downloading https://getcomposer.org/versions: SSL certificate problem: unable to get local issu
        er certificate
      Já tentei atualizar o composer, mas dá o mesmo erro acima.
    • Por violin101
      Caros amigos, saudações.
       
      Estou com uma dúvida de validação de INPUT com função moeda.
       
      Tenho um input onde o usuário digita um valor qualquer, por exemplo: 1.234,56
      o problema é quando precisa atualizar o valor.
       
      Quando o usuário atualizar o input fica assim: 1.234,
       
      como faço para atualizar as casas decimais, conforme o valor for sendo alterado ?
       
      o input está assim:
       
      <div class="col-md-2"> <label for="">Valor Unitário</label> <input type="text" class="form-control" id="estoqprod" name="estoqprod" style="font-size:15px; font-weight:bold; width:100%; text-align:center;" placeholder="0,00" OnKeyUp="calcProd();" onkeypress="return(FormataMoeda(this,'.',',',event))" > </div>  
      a função para formatar o input para moeda está assim:
      obs.: a Função CalcProd está executando corretamente
      function calcProd(){ //Obter valor digitado do produto var estoq_prod = document.getElementById("estoqprod").value; //Remover ponto e trocar a virgula por ponto while (estoq_prod.indexOf(".") >= 0) { estoq_prod = estoq_prod.replace(".", ""); } estoq_prod = estoq_prod.replace(",","."); //Obter valor digitado do produto var prod_qtde = document.getElementById("qtde").value; //Remover ponto e trocar a virgula por ponto while (prod_qtde.indexOf(".") >= 0) { prod_qtde = prod_qtde.replace(".", ""); } prod_qtde = prod_qtde.replace(",","."); //Calcula o Valor do Desconto if (prod_qtde > 0 && estoq_prod > 0) { calc_total_produto = parseFloat(prod_qtde) - parseFloat(estoq_prod); var numero = calc_total_produto.toFixed(2).split('.'); //Calculo para não deixar GRAVAR valores negativos if (calc_total_produto < 0 ) { numero[0] = numero[0].split(/(?=(?:...)*$)/).join('.') * -1; document.getElementById("qtdeTotal").value = numero.join(','); } else { numero[0] = numero[0].split(/(?=(?:...)*$)/).join('.'); document.getElementById("qtdeTotal").value = numero.join(','); } } else { if (estoq_prod > 0) { document.getElementById("qtdeTotal").value = document.getElementById("estoqprod").value; } else { document.getElementById("qtdeTotal").value = "0,00"; } } } /*---Função para Formatar Campo para Moeda [R$]---*/ function FormataMoeda(objTextBox, SeparadorMilesimo, SeparadorDecimal, e){ var sep = 0; var key = ''; var i = j = 0; var len = len2 = 0; var strCheck = '0123456789'; var aux = aux2 = ''; var whichCode = (window.Event) ? e.which : e.keyCode; if (whichCode == 13) return true; key = String.fromCharCode(whichCode); // Valor para o código da Chave if (strCheck.indexOf(key) == -1) return false; // Chave inválida len = objTextBox.value.length; for(i = 0; i < len; i++) if ((objTextBox.value.charAt(i) != '0') && (objTextBox.value.charAt(i) != SeparadorDecimal)) break; aux = ''; for(; i < len; i++) if (strCheck.indexOf(objTextBox.value.charAt(i))!=-1) aux += objTextBox.value.charAt(i); aux += key; len = aux.length; if (len == 0) objTextBox.value = ''; if (len == 1) objTextBox.value = '0'+ SeparadorDecimal + '0' + aux; if (len == 2) objTextBox.value = '0'+ SeparadorDecimal + aux; if (len > 2) { aux2 = ''; for (j = 0, i = len - 3; i >= 0; i--) { if (j == 3) { aux2 += SeparadorMilesimo; j = 0; } aux2 += aux.charAt(i); j++; } objTextBox.value = ''; len2 = aux2.length; for (i = len2 - 1; i >= 0; i--) objTextBox.value += aux2.charAt(i); objTextBox.value += SeparadorDecimal + aux.substr(len - 2, len); } return false; }  
      Grato,
       
      Cesar
    • Por violin101
      Caros amigos, saudações.
       
      Estou com uma dúvida de validação de INPUT com função moeda.
       
      Tenho um input onde o usuário digita um valor qualquer, por exemplo: 1.234,56
      o problema é quando precisa atualizar o valor.
       
      Quando o usuário atualizar o input fica assim: 1.234,
       
      como faço para atualizar as casas decimais, conforme o valor for sendo alterado ?
       
      o input está assim:
       
      <div class="col-md-2"> <label for="">Valor Unitário</label> <input type="text" class="form-control" id="estoqprod" name="estoqprod" style="font-size:15px; font-weight:bold; width:100%; text-align:center;" placeholder="0,00" OnKeyUp="calcProd();" onkeypress="return(FormataMoeda(this,'.',',',event))" > </div>  
      a função para formatar o input para moeda está assim:
      obs.: a Função CalcProd está executando corretamente
      function calcProd(){ //Obter valor digitado do produto var estoq_prod = document.getElementById("estoqprod").value; //Remover ponto e trocar a virgula por ponto while (estoq_prod.indexOf(".") >= 0) { estoq_prod = estoq_prod.replace(".", ""); } estoq_prod = estoq_prod.replace(",","."); //Obter valor digitado do produto var prod_qtde = document.getElementById("qtde").value; //Remover ponto e trocar a virgula por ponto while (prod_qtde.indexOf(".") >= 0) { prod_qtde = prod_qtde.replace(".", ""); } prod_qtde = prod_qtde.replace(",","."); //Calcula o Valor do Desconto if (prod_qtde > 0 && estoq_prod > 0) { calc_total_produto = parseFloat(prod_qtde) - parseFloat(estoq_prod); var numero = calc_total_produto.toFixed(2).split('.'); //Calculo para não deixar GRAVAR valores negativos if (calc_total_produto < 0 ) { numero[0] = numero[0].split(/(?=(?:...)*$)/).join('.') * -1; document.getElementById("qtdeTotal").value = numero.join(','); } else { numero[0] = numero[0].split(/(?=(?:...)*$)/).join('.'); document.getElementById("qtdeTotal").value = numero.join(','); } } else { if (estoq_prod > 0) { document.getElementById("qtdeTotal").value = document.getElementById("estoqprod").value; } else { document.getElementById("qtdeTotal").value = "0,00"; } } } /*---Função para Formatar Campo para Moeda [R$]---*/ function FormataMoeda(objTextBox, SeparadorMilesimo, SeparadorDecimal, e){ var sep = 0; var key = ''; var i = j = 0; var len = len2 = 0; var strCheck = '0123456789'; var aux = aux2 = ''; var whichCode = (window.Event) ? e.which : e.keyCode; if (whichCode == 13) return true; key = String.fromCharCode(whichCode); // Valor para o código da Chave if (strCheck.indexOf(key) == -1) return false; // Chave inválida len = objTextBox.value.length; for(i = 0; i < len; i++) if ((objTextBox.value.charAt(i) != '0') && (objTextBox.value.charAt(i) != SeparadorDecimal)) break; aux = ''; for(; i < len; i++) if (strCheck.indexOf(objTextBox.value.charAt(i))!=-1) aux += objTextBox.value.charAt(i); aux += key; len = aux.length; if (len == 0) objTextBox.value = ''; if (len == 1) objTextBox.value = '0'+ SeparadorDecimal + '0' + aux; if (len == 2) objTextBox.value = '0'+ SeparadorDecimal + aux; if (len > 2) { aux2 = ''; for (j = 0, i = len - 3; i >= 0; i--) { if (j == 3) { aux2 += SeparadorMilesimo; j = 0; } aux2 += aux.charAt(i); j++; } objTextBox.value = ''; len2 = aux2.length; for (i = len2 - 1; i >= 0; i--) objTextBox.value += aux2.charAt(i); objTextBox.value += SeparadorDecimal + aux.substr(len - 2, len); } return false; }  
      Grato,
       
      Cesar
×

Informação importante

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