Ir para conteúdo

POWERED BY:

Arquivado

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

felipeolheiro

[Resolvido] Include em php

Recommended Posts

Olá,

 

eu tenho o site www.acw.org.br

 

é o seguinte, na página http://www.acw.org.br/vento.php , eu queria incluir essa página:

http://www.flow.com.br/wind2/vento.html

 

Eu fiz com o seguinte código:

<?
include("http://www.flow.com.br/wind2/vento.html"); 
?>

 

Não está funcionando..

O engraçado é que funcionava e do nada, parou de funcionar.

E outra, agora, além de não funcionar, ela corta o que tem a baixo disso, ou seja, o rodapé.

 

que diabos? oO

 

agradeço desde já!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Habilite todas as mensagens de erro e execute novamente.

 

<?php
ini_set('display_errors', 1); 
error_reporting(E_ALL);
?>

Provavelmente foi desabilitado a opção allow url fopen no PHP.INI.

 

http://br.php.net/manual/pt_BR/filesystem.configuration.php#ini.allow-url-fopen

 

Veja se exibe alguma coisa

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não está funcionando..

O engraçado é que funcionava e do nada, parou de funcionar.

 

Explica esse "parou de funcionar". Exibiu alguma mensagem de erro? O que aconteceu realmente, fale com detalhes.

 

E outra, agora, além de não funcionar, ela corta o que tem a baixo disso, ou seja, o rodapé.

Como pode notar, a página que esta incluindo, está abrindo e fechando a tag <body>. Por isso que o rodape não aparece mais, porque ele fica fora do corpo (<body>) da página.

 

<tr>

<td align='center' width='25%' bgcolor='#FFFFFF' ><div style='font-size:10px'>1-Oct-09</div></td>
<td align='center' width='25%' bgcolor='#FFFFFF' ><div style='font-size:10px'>7:17:18</div></td>
<td align='center' width='25%' bgcolor='#FFFFFF' ><div style='font-size:10px'>12.77</div></td>
<td align='center' width='25%' bgcolor='#FFFFFF' ><div style='font-size:10px'>18.1
</div></td>
</tr>

</table>


</body>

 

Como pode ver, </body> está ali e é ela que faz o "estrago" no rodapé. Para remover aquele </body>, pode usar um simples str_replace().

Veja:

 

<?php

echo str_replace( array( '<body>', '</body>' ), '', file_get_contents( 'http-~~-//www.flow.com.br/wind2/vento.html' ) );

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

E outra, agora, além de não funcionar, ela corta o que tem a baixo disso, ou seja, o rodapé.

Como pode notar, a página que esta incluindo, está abrindo e fechando a tag <body>. Por isso que o rodape não aparece mais, porque ele fica fora do corpo (<body>) da página.

 

 

Como pode ver, </body> está ali e é ela que faz o "estrago" no rodapé. Para remover aquele </body>..

 

Não é bem assim.

A duplicação dessas tags HTML não faz isso com a página não.

 

Apesar de ser complemente errado, não deixa de processar o restante do HTML por causa disso.

Era bom se fosse tão rígido, ai menos pessoas cometeriam esses erros. Mas não é assim que funciona.

 

Acredito que o 'die', da execução/falha do script é que está causando o 'corte' do HTML que vem depois da tentativa de inclusão.

E outra.. era melhor que ele 'lêsse' a página, pegasse o conteúdo e jogasse na dele ne?!

Existem funções php para tal.

 

Em vez de tentar incluir a página completa e diretamente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Em vez de tentar incluir a página completa e diretamente.

 

Isso é claro sem considerar as questões de segurança.

 

eu queria incluir essa página:

 

Olha felipeolheiro,

 

O que o William disse está absolutamente correto, se você precisar apenas do conteúdo processado da página remota então o ideal é utilizar cURL, agora se existirem funções PHP nessa página que você realmente precise, então o ideal é utilizar um webservice para isso.

 

Para recuperar o conteúdo de uma página externa utilizando cURL você pode utilizar a função abaixo:

 

/**
* Pega o conteúdo de uma página externa
* @param string $url A localização da página
* @param string $conteudo Variável passada por referência que receberá o conteúdo externo
* @param integer $errno Código de erro caso a cURL falhe em recuperar o conteúdo
* @param string $error Descrição do código de erro
* @return boolean FALSE caso não seja possível recuperar o conteúdo
*/
function pegaConteudoExterno( $url , &$conteudo , &$errno = null , &$error = null ){
$ret = false;

if ( $curl = curl_init() ){
curl_setopt( $curl , CURLOPT_HEADER , 0 );
curl_setopt( $curl , CURLOPT_RETURNTRANSFER , 1 );
curl_setopt( $curl , CURLOPT_URL , $url );

$conteudo = curl_exec( $curl );

if ( $errno = curl_errno( $curl ) ) $error = curl_error( $curl );
else $ret = true;

curl_close( $curl );
} else {
$errno = -1;
$error = 'Não foi possível iniciar a cURL';
}

return $ret;
}

 

Para utilizá-la é bem simple:

if ( pegaConteudoExterno( 'http-~~-//www.flow.com.br/wind2/vento.html' , $conteudo , $errno , $error ) ){
echo $conteudo;
} else {
printf( 'Não foi possível recuperar o conteúdo, erro[ %d ]: %s' , $errno , $error ); //Exibe uma mensagem de erro se não for possível recuperar o conteúdo
}

 

;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Antes de mais nada, obrigado por todas as respostas.

 

Aproveitando o tópico, gostaria de perguntar mais uma coisa:

 

Eu sou bem leigo, estou começando agora. Eu comecei a desenvolver esse site do modo mais básico o possível.

 

Resultado: além de ficar lento, se eu tivesse que fazer uma alteração no menu, eu teria que mudar em todas as outras páginas, uma por uma..

 

Bom eu to fazendo as páginas com uma espécie de include, não sei bem como chama isso.

Estou usando esse código:

 

<!--conteudo dinamico-->

		<?
      if ($_GET['subtarget'] && $_GET['target'] && is_dir('modulos/'.$_GET['target']) && is_file('modulos/'.$_GET['target'].'/'.$_GET['subtarget'].'.php'))
      {
         include('modulos/'.$_GET['target'].'/'.$_GET['subtarget'].'.php'); 
       
      }
		else if ($_GET['target'] && is_dir('modulos/'.$_GET['target']) && is_file('modulos/'.$_GET['target'].'/index.php'))
      {
         include('modulos/'.$_GET['target'].'/index.php'); 
       
      }
      else
      {
         include('modulos/home/index.php'); 
      } 
       ?>

<!--conteudo dinamico-->

Note que ele apenas da um include na index.php e dai, eu vou linkando para as outras páginas, que estarão na pasta 'modulos'.

 

O internet explorer está acusando erro, "Pagina contem erros".

O que há de errado?

 

Eu puis no ar só para fazer testes, está em http://www.acw.org.br/testes

Compartilhar este post


Link para o post
Compartilhar em outros sites

O internet explorer está acusando erro, "Pagina contem erros".

 

Olhando por cima, eu não identifiquei nenhum erro nesse seu PHP, porém, esse tipo de mensagem costuma estar relacionado a erro de javascript e não do PHP.

 

Quanto ao tópico principal, a dúvida foi resolvida ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olhando por cima, eu não identifiquei nenhum erro nesse seu PHP, porém, esse tipo de mensagem costuma estar relacionado a erro de javascript e não do PHP.

Quanto ao tópico principal, a dúvida foi resolvida ?

 

Como você disse, realmente não era na parte PHP e sim no JAVASCRIPT. Dei uma escaniada aqui e achei o erro, muito obrigado!

 

Quanto ao PHP to me virando aqui, mas agradeço demais!

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.