Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] file_get_cotents failed to open stream gdzię błąd
twardes
post 2.06.2009, 07:09:29
Post #1





Grupa: Zarejestrowani
Postów: 23
Pomógł: 0
Dołączył: 13.01.2008

Ostrzeżenie: (0%)
-----


Witam!

Mam oto taki plik który odpowiedzialny jest za pingowanie sitemapy (http://www.forumbiznesu.eu/rapidfinder.pl/tesssst.php)

  1. <?php
  2.  
  3. function sitemapSubmit($strona,$engine,$OKmessage,$NOmessage)
  4. {
  5.    
  6.    $okTag = 'OKsi';
  7.    $noTag = 'NOsi';
  8.    
  9.    $pingurl = $engine.$strona;
  10.  
  11.    $source = @file_get_contents("$pingurl");
  12.  
  13.    if ($source != false) {
  14.        
  15.        $source = strip_tags($source);
  16.        $source = "BUFOR".$source;
  17.        
  18.        $isOKmessage = stripos($source,$OKmessage);
  19.        $isNOmessage = stripos($source,$NOmessage);
  20.        
  21.        if (($isOKmessage != false)&&($isNOmessage == false)) {$submitRaport = $okTag.$OKmessage;}
  22.        if (($isOKmessage == false)&&($isNOmessage != false)) {$submitRaport = $noTag.$NOmessage;}
  23.        if (($isOKmessage == false)&&($isNOmessage == false)) {$submitRaport = $noTag.'Submission error';}
  24.  
  25.    }
  26.    
  27.    else if ($source == false) {$submitRaport = $noTag.'Engine error';}
  28.    
  29.    return array($source, $submitRaport);
  30.  
  31. }
  32.  
  33. $silnik = array(
  34.  
  35.    'goo' => array (
  36.        'nazwaEngine' => 'Google',
  37.        'engine' => 'http://www.google.com/webmasters/sitemaps/ping?sitemap=',
  38.        'OKmessage' => 'Sitemap Notification Received',
  39.        'NOmessage' => 'Bad Request'
  40.    ),
  41.  
  42.    'yah' => array (
  43.        'nazwaEngine' => 'Yahoo!',
  44.        'engine' => 'http://search.yahooapis.com/SiteExplorerService/V1/ping?sitemap=',
  45.        'OKmessage' => 'Update notification has successfully submitted',
  46.        'NOmessage' => 'The following errors were detected'
  47.    ),    
  48.  
  49.    'liv' => array (
  50.        'nazwaEngine' => 'Live Search',
  51.        'engine' => 'http://webmaster.live.com/ping.aspx?siteMap=',
  52.        'OKmessage' => 'Thanks for submitting your sitemap',
  53.        'NOmessage' => 'baddddddd'
  54.    ),
  55.  
  56.    'ask' => array (
  57.        'nazwaEngine' => 'Ask.com',
  58.        'engine' => 'http://submissions.ask.com/ping?sitemap=',
  59.        'OKmessage' => 'Your Sitemap submission was successful',
  60.        'NOmessage' => 'Your Sitemap submission was not successful'
  61.    ),
  62.  
  63.    'mor' => array (
  64.        'nazwaEngine' => 'Moreover',
  65.        'engine' => 'http://api.moreover.com/ping?u=',
  66.        'OKmessage' => 'Thank you for your ping',
  67.        'NOmessage' => 'baddddddd'
  68.    ),
  69.    
  70.    'for' => array (
  71.        'nazwaEngine' => 'ForumBiznesu.eu',
  72.        'engine' => 'http://www.forumbiznesu.eu/wordpress/submission.php?sitemap=',
  73.        'OKmessage' => 'Sitemap submission successful',
  74.        'NOmessage' => 'baddddddd'
  75.    ),
  76.  
  77. );
  78.  
  79.  
  80. $added_sitemap .= '<p>';
  81.  
  82. foreach ($silnik as $siln => $cecha )
  83. {
  84.    
  85. $nazwaEngine    = $cecha['nazwaEngine'];
  86. $engine            = $cecha['engine'];
  87. $OKmessage        = $cecha['OKmessage'];
  88. $NOmessage        = $cecha['NOmessage'];
  89.  
  90. $strona = "http://www.jakasstrona.com/sitemap.xlm";
  91.  
  92. list ($source, $submitRaport) =  sitemapSubmit($strona,$engine,$OKmessage,$NOmessage);
  93.  
  94. $statusTag = substr($submitRaport,0,4);
  95. if ($statusTag == 'OKsi') {$icon = ':-) ';}
  96. else if ($statusTag == 'NOsi') {$icon = ';-OOOOO ';}
  97. else {$icon = '';}
  98.  
  99. $submitRaport = substr($submitRaport,4);
  100.  
  101. $insert_sitemap = "\n".$icon."<b>".$nazwaEngine."</b> reported:<br /><i>".$submitRaport."</i><br />";
  102. $added_sitemap .= $insert_sitemap;
  103.  
  104. }
  105.  
  106. $added_sitemap .= '</p>';
  107.  
  108. ?>
  109.  
  110. <?=$added_sitemap?>



Jednakże z niejasnych przyczyn prawie zawszenie nie udaje się uzyskać treści http://search.yahooapis.com/SiteExplorerService/V1/ping?sitemap=http://www.jakasstrona.com/sitemap.xlm (raz na 100 zadziała)
wpisując ręcznie ten adres problemużadnego nie ma.

gdy pozbędę się operatora
@ sprzed funkcji file_get_contents() (tak wygląda plik na serwerze) widzę komunikat:
Kod
         Warning:  file_get_contents(http://search.yahooapis.com/SiteExplorerService/V1/ping?sitemap=http://www.jakasstrona.com/sitemap.xlm) function.file-get-contents: failed to open stream: HTTP request failed! HTTP/1.1 403 Forbidden   in /home/twardes0/public_html/rapidfinder.pl/tesssst.php on line 11


próbowałem różnych rozwiązań ale na razie nici (domyślam się że chodzi o nagłówki http)




Proszę o wasze pomysły


--------------------
Jak założyć firmę, napisać biznes plan? - ForumBiznesu.eu
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 8)
golaod
post 2.06.2009, 08:47:37
Post #2





Grupa: Zarejestrowani
Postów: 419
Pomógł: 42
Dołączył: 12.08.2008
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


  1. <?php
  2. rawurlencode($strona);
  3. ?>


Wystarczy się zastanowić gdzie prowadzi link www.google.pl/podkatalog/podkatalog/index.php?zmienna_get=http:/podkatalog/podkatalog. Prawda ?

Ten post edytował golaod 2.06.2009, 08:48:59
Go to the top of the page
+Quote Post
twardes
post 2.06.2009, 18:02:26
Post #3





Grupa: Zarejestrowani
Postów: 23
Pomógł: 0
Dołączył: 13.01.2008

Ostrzeżenie: (0%)
-----


Cytat(golaod @ 2.06.2009, 09:47:37 ) *
  1. <?php
  2. rawurlencode($strona);
  3. ?>
niestety nie pomaga

Cytat
Wystarczy się zastanowić gdzie prowadzi link www.google.pl/podkatalog/podkatalog/index.php?zmienna_get=http:/podkatalog/podkatalog. Prawda ?

a tu nie rozumiem pytania, ja wiem gdzie dany link powadzi, tylko nie wiem czemu nie działa w połączeniu z funkcją file_get_contents


--------------------
Jak założyć firmę, napisać biznes plan? - ForumBiznesu.eu
Go to the top of the page
+Quote Post
sada
post 2.06.2009, 21:38:32
Post #4





Grupa: Zarejestrowani
Postów: 302
Pomógł: 24
Dołączył: 6.12.2008

Ostrzeżenie: (0%)
-----


spróbuj bez cudzysłowów
$source = @file_get_contents($pingurl);
Go to the top of the page
+Quote Post
twardes
post 3.06.2009, 16:04:03
Post #5





Grupa: Zarejestrowani
Postów: 23
Pomógł: 0
Dołączył: 13.01.2008

Ostrzeżenie: (0%)
-----


Cytat(sada @ 2.06.2009, 22:38:32 ) *
spróbuj bez cudzysłowów
$source = @file_get_contents($pingurl);

nic to nie zmienia sad.gif


--------------------
Jak założyć firmę, napisać biznes plan? - ForumBiznesu.eu
Go to the top of the page
+Quote Post
jamSoft
post 3.06.2009, 23:14:07
Post #6





Grupa: Zarejestrowani
Postów: 44
Pomógł: 0
Dołączył: 4.03.2008

Ostrzeżenie: (20%)
X----


Rzeczywiście może chodzić o nagłówki. Wyślij je przed file_get_contents - takie jakie wysyła typowa przeglądarka. Albo użyj curl.
Jest jeszcze stream_get_contents.

poszukaj na php.net. tam jest wiele rozwiązań dla wbudowanych funkcji php.

http://www.checkupdown.com/status/E403.html


--------------------
tworzenie stron internetowych- Siedlce, usługi programistyczne - http://wereda.net
Go to the top of the page
+Quote Post
Pilsener
post 4.06.2009, 07:34:04
Post #7





Grupa: Zarejestrowani
Postów: 1 590
Pomógł: 185
Dołączył: 19.04.2006
Skąd: Gdańsk

Ostrzeżenie: (0%)
-----


1. Twój hosting może wyłączyć możliwość pobierania treści i plików przez URL - sprawdź, czy masz taką możliwość
2. Serwis z którego chcesz coś zassać może mieć coś przeciwko takiej ssawce, co mu podsysa content i stawia na tym np. spam albo korzysta choćby z kursów walut czy prognozy pogody w sposób nieoficjalny (czyli bezpośrednio ze strony). Musisz udawać zwykłego użytkownika albo podszywać się pod google, najlepiej za pomocą CURL - uniezależnisz się też od allow_url ON/OFF.
Go to the top of the page
+Quote Post
twardes
post 4.06.2009, 20:40:27
Post #8





Grupa: Zarejestrowani
Postów: 23
Pomógł: 0
Dołączył: 13.01.2008

Ostrzeżenie: (0%)
-----


Cytat(jamSoft @ 4.06.2009, 00:14:07 ) *
Rzeczywiście może chodzić o nagłówki. Wyślij je przed file_get_contents - takie jakie wysyła typowa przeglądarka. Albo użyj curl.
Jest jeszcze stream_get_contents.

poszukaj na php.net. tam jest wiele rozwiązań dla wbudowanych funkcji php.

http://www.checkupdown.com/status/E403.html


co do nagłówków to próbowałem wielu przykładów i ich kombinacji z komentarzy w manualu PHP niestety nic działającego nie umiałem zrobić. A curl nigdy nie uzywałem... Jakieś może linki czy przykłady??

Cytat(Pilsener @ 4.06.2009, 08:34:04 ) *
1. Twój hosting może wyłączyć możliwość pobierania treści i plików przez URL - sprawdź, czy masz taką możliwość
2. Serwis z którego chcesz coś zassać może mieć coś przeciwko takiej ssawce, co mu podsysa content i stawia na tym np. spam albo korzysta choćby z kursów walut czy prognozy pogody w sposób nieoficjalny (czyli bezpośrednio ze strony). Musisz udawać zwykłego użytkownika albo podszywać się pod google, najlepiej za pomocą CURL - uniezależnisz się też od allow_url ON/OFF.


z serwerem nic nie jest, wszędzie indziej działa. Jak już mówiłem problem jest tylko z yahoo, a i tak czasami zadziała


--------------------
Jak założyć firmę, napisać biznes plan? - ForumBiznesu.eu
Go to the top of the page
+Quote Post
erix
post 4.06.2009, 21:57:38
Post #9





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




A przez klasy działające via fsockopen" title="Zobacz w manualu PHP" target="_manual? (np: http://phpclasses.toperz.pl/browse/package/576.html)


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 19.07.2025 - 17:07