Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] zapis kodu HTML
Forum PHP.pl > Forum > PHP
krystian_p
Chciałbym zapisać kod HTML pliku index.php do osobnego pliku, np. index2.php
Gdy korzystam z funkcji fopen, pokazuje mi się nie kod HTML, tylko cała zawartość pliku, czyli razem z PHP... Wiem, że do tego trzeba użyć funkcji fsockopen,ale ona też nie do końca działa... Może dlatego, że pracuję na Krasnalu?

  1. <?
  2. $socket = @fsockopen('http://localhost/~konto/index.php', 80);
  3. ?>


Więc w jaki sposób mam wyciągnąć HTML'ową zawartość danego pliku, która jest widziana okiem użytkownika?
flv
file_get_contents, chociaż sockety też powinny działać
UDAT
A jak otworzysz przez przeglądarkę ten adres to masz przeparsowany plik?
Jeśli tak to w skrypcie też będziesz miał.
krystian_p
nic mi się nie pokazuje, skopiujcie ten kod, włączcie krasnala, a zobaczycie...
właśnie nie wiem dlaczego, a zależy mi na tym, by system za każdym razem nie łączył się z bazą danych, tylko ładował całą zawartość osobnego pliku do indexu - oczywiście codziennie następowałaby synchronizacja
Kicok
Cytat
nic mi się nie pokazuje, skopiujcie ten kod, włączcie krasnala, a zobaczycie...


Który kod? Ten podany wyżej? Jeśli tak, to chyba jasne, że nic się nie wyświetli ;]



Najprościej jest użyć do tego file_get_contents" title="Zobacz w manualu PHP" target="_manual:
  1. <?php
  2.  
  3.  
  4. $content = file_get_contents( 'http://localhost/~konto/index.php' );
  5.  
  6. // Wyświetlanie zawartości zmiennej $content
  7. echo nl2br( htmlspecialchars( $content ) );
  8.  
  9. ?>

Tyle, że na niektórych serwerach wrappery URL dla funkcji systemu plików (fopen, file, file_get_contents) są wyłączone.


Można też to zrobić przy użyciu fsockopen:
  1. <?php
  2.  
  3.  
  4. $fp = @fsockopen( 'localhost', 80, $errno, $error, 5 );
  5. if( !is_resource( $fp ) ) {
  6. die( "Błąd połączenia z serwerem:<br>#{$errno} {$error}" );
  7. }
  8.  
  9. stream_set_timeout( $fp, 5, 0 );
  10. fwrite( $fp, "GET /~konto/index.php HTTP/1.1rn" );
  11. fwrite( $fp, "Host: localhostrn" );
  12. fwrite( $fp, "Connection: closernrn" );
  13.  
  14.  
  15. $content = '';
  16. while( !feof( $fp ) ) {
  17. $content .= fread( $fp, 1024 );
  18. }
  19. fclose( $fp );
  20.  
  21.  
  22.  
  23. // Wyświetlanie zawartości zmiennej $content
  24. echo nl2br( htmlspecialchars( $content ) );
  25.  
  26. ?>

W tym przypadku trzeba znać podstawy protokołu HTTP. No i zmienną $content będziesz musiał jeszcze oczyścić ze śmieci (nagłówki, itp.)


Trzecia możliwość to cURL" title="Zobacz w manualu PHP" target="_manual:
  1. <?php
  2.  
  3.  
  4. $ch = curl_init( 'http://localhost/~konto/index.php' );
  5. curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
  6.  
  7. $content = curl_exec( $ch );
  8. if( curl_error( $ch ) != 0 ) {
  9. die( 'Błąd połączenia z serwerem:<br>#' . curl_errno( $ch ) . ' ' . curl_error( $ch ) );
  10. }
  11. curl_close( $ch );
  12.  
  13.  
  14. // Wyświetlanie zawartości zmiennej $content
  15. echo nl2br( htmlspecialchars( $content ) );
  16.  
  17. ?>
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.