Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][HTML] Problem z file_get_contents
Forum PHP.pl > Forum > Przedszkole
Szaztag
Mam taki problem. Skrypt php nie dziala mi na jednej stronie a na drugiej zrobionej do przetestowania tylko file_get_content dziala. Cos jest w kodzie zle ale nie potrafie tego wychwycić.
Temat bardzo zawiły i skrypt napisany baardzo po swojemu ale co znajde w google to aplikuje odrazu ;-) Postaram się wszystko dobrze wytlumaczyć
ta strona dziala ok
  1. <html>
  2.  
  3. <?php
  4. $addre = file("adresy.txt"); //plik z danymi
  5.  
  6. foreach($addre as $adresyIP)// petla wykonuje sie tyle razy ile jest wierszy w pliku tu akurat 4 razy
  7. {
  8.  
  9. $time_start = microtime(true);
  10. $zmienna = file_get_contents("http://www.onet.pl");
  11. $time_end = microtime(true);
  12. echo $zmienna; //wyswietla pobrana strone
  13. file_put_contents("strona.txt", $zmienna);
  14.  
  15. //$zmienna = curl_init($adresyIP); //wczytuje do zmiennej strone
  16.  
  17. $time = number_format(round($time_end - $time_start,10),10);
  18.  
  19. echo $adresyIP." ";
  20.  
  21. echo "Did nothing in $time seconds<br>";
  22. }
  23.  
  24. ?>
  25. </html>


ten plik jest juz bardziej zagmatwany

  1. <html>
  2.  
  3. <body>
  4.  
  5. <br><br><br><br><br><br>
  6. <center>
  7. <img src=logo.jpg>
  8. </center>
  9. <br>
  10. <center>
  11. <h1>Witaj na stronie projektu </h1>
  12.  
  13. </center>
  14. <br><br><br><br><br>
  15.  
  16. <?php
  17.  
  18. $zmienna = file_get_contents("http://www.onet.pl");
  19.  
  20. file_put_contents('strona.txt', $smienna);
  21.  
  22.  
  23. $plik = file("dane.txt");
  24. $ilosclini = count($plik); //zliczanie lini w pliku
  25.  
  26.  
  27. $lines = file("dane.txt");
  28.  
  29. echo "<table border='1'>";
  30. echo "<td>";
  31. echo "Ilość serwerów: <b>" .$ilosclini ,"</b><br>";
  32. foreach($lines as $line) // Pętla wypisujaca wszystkie serwery z pliku dane.txt
  33. {
  34. echo($line.'<br>');
  35. }
  36.  
  37.  
  38. echo "</td>";
  39. echo "<td>";
  40. echo "Czas wczytania strony z serwera w sekundach<br>";
  41.  
  42. $addre = file("adresy.txt");
  43.  
  44. foreach($addre as $adresyIP)
  45. {
  46.  
  47. $adresyIP="http://".trim($adresyIP).":9090";
  48. $time_start = microtime(true);
  49.  
  50.  
  51. //$zmienna = curl_init($adresyIP); //wczytuje do zmiennej strone
  52. $time_end = microtime(true);
  53.  
  54. $time = number_format(round($time_end - $time_start,10),10);
  55.  
  56.  
  57. echo $adresyIP." ";
  58.  
  59. echo "Did nothing in $time seconds<br>";
  60.  
  61. }
  62.  
  63. echo "</td>";
  64. echo "</table>";
  65.  
  66. if (isset($_POST['execute'])) // funkcja czyszczaca pliki i odswieza strone
  67. {
  68. file_put_contents('phonelog.txt', '');
  69. file_put_contents('adresy.txt', '');
  70. file_put_contents('dane.txt', '');
  71. header('refresh: 1;');
  72. }
  73.  
  74.  
  75. if (isset($_POST['refresh'])){ //odswiezanie strony
  76. header('refresh: 1;');
  77. }
  78.  
  79. ?>
  80.  
  81.  
  82. <table>
  83. <tr>
  84. <td>
  85. <form method="post">
  86. <input type="hidden" name="execute" value="true">
  87. <input type="submit" value="Wyczyść wszystkie dane">
  88. </form>
  89. </td>
  90. <td>
  91. <form method="post">
  92. <input type="hidden" name="refresh" value="true">
  93. <input type="submit" value="Odśwież Stronę">
  94. </form>
  95. </td>
  96. <td>jakis przycisk</td>
  97. </tr>
  98.  
  99. </table>
  100.  
  101. </body>
  102. </html>


wczesniej file_get_contents bylo w petli ale nie chcialo dziala i przenioslem to na sama gore zaraz za <?php ale tez nie dziala... Nie wiem czemu, jakies pomysly? ewentualnie porady w jaki sposob pisac itd?
viking
Co konkretnie oznacza że nie działa? Podaj komunikat błędu. Być może serwer nie zezwala na pobieranie zdalnej zawartości.
Szaztag
Oto chodzi że niby strona się wyświetla ok i błedu nie ma ale na stronie testowej pojawia się 4 razy strona onetu a na tamtej drugiej nie tzn jakby file get contents nie dzialalo. Dla sprawdzenia zrobilem jkeszcze zapis pobranej strony do pliku i w pliku nic nie ma a na stronie testowej to dziala. Cos jakby w kodzie albo blokowalo albo bylo zle napisane i ani file get content ani curl init nie dzialaja,,,
viking
Zobacz ustawienia allow_url_include
Szaztag
ale tak jak piszę bez zmieniania na stronie testowej dziala ok a na tej glownej nie dziala. Mam strone postawiona na hostingu cba.pl i nie wiem gdzie ten plik lub funkcje moge znalezc...
Szaztag
Dobra powiedzmy ze mam ten blad rozwiazany. Doszedlem do tego ze po kolei kopiowalem tekst i juz jest ok. Gdzie blad nie wiem ale dziala jak chce. teraz kolejny problem
Potrzebuje z mojego serwera X wyslac zapytanie do serwera proxy Y o strone W na porcie 9090. Niestety serwer X obsluguje tylko port 80 i nie wysyla zapytania na port 9090.
Wiem ze konstrukcja wyglada mniej wiecej tak

  1. $opts = array(
  2. 'http'=>array(
  3. 'method'=>"GET",
  4. 'header'=>"Accept-language: en\r\n" .
  5. "Cookie: foo=bar\r\n",
  6. 'proxy' => 'tcp://adresIPproxy/:80',
  7. )
  8. );
  9.  
  10. $context = stream_context_create($opts);
  11.  
  12. // Open the file using the HTTP headers set above
  13. $file = file_get_contents('http://stronaNaPorcie.pl:9090', false, $context);
  14.  
  15. echo $file;


Znacie jakis dobre proxy co mi to obsluzy?
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.