Autor Zpráva
Perry
Profil
Snažím se načíst část dat z jiné stránky, ovšem nijak se mi to nedaří.

Zkoušel jsem cURL, fsockopen, file_get_contents i stream_get_contents

ale u všeho se mi načte nějaka jina stranka. Je mozne ze to muze web nejak "vybanovat" ?
Beavis
Profil
Perry
Viz. http://diskuse.jakpsatweb.cz/index.php?action=vthread&forum=8&topic=100414#7
Radek9
Profil
Beavis:
<ot>"Viz" není zkratka, ale sloveso. Tudíž se za ním nepíše tečka.</ot>
Perry:
Vyhazuje nějaký error?
Perry
Profil
Sreánka vypíše nějakou hlášku. Vzhledem k tomu, že je cizojazyčná, nevím jakou :)
Radek9
Profil
Pošli ji sem.
Perry
Profil
Radek9:

Poslaná hláška nic neřeší... jde mi o global, jestli je vubec mozne nejak tyhle php fce. banovat a pokud jo, jak se to da obejit a stranka nacist
Davex
Profil
Možností je několik:

cURL - nemusí být na serveru zapnuto
fsockopen() - funkce může být zakázána
file_get_contents() a stream_get_contents() - funkce jsou v PHP až od verze 4.3.0, resp. 5

Stahování souborů z jiných stránek zakázat jde.

u všeho se mi načte nějaka jina stranka
Na cílové stránce se může podle něčeho kontrolovat, zda jí stahuje něco jiného než webový prohlížeč.
Radek9
Profil
Perry:
Poslaná hláška nic neřeší...
Ale řeší :) Poznali by jsme z toho na jakém řádku je chyba, jestli daná funkce existuje, jestli je povolena, atd.
Alphard
Profil
Perry:
jde mi o global, jestli je vubec mozne nejak tyhle php fce. banovat a pokud jo, jak se to da obejit a stranka nacist
Je to otázka hlaviček. Podívejte se třeba ve Firebugu (rozšíření Firefoxu) jaký požadavek prohlížeč posílá na server.
Perry
Profil
Radek9:
To jsi mě špatně pochopil... ja na svem webu nemam chybovku.. fce funguji vsechny, jenom proste nenactou tu "cizi" stranku, kterou chci.

Pr:

$stream = file_get_contents("http://www.example.com");

a misto aby ve $stream byl obsah www.example.com, je tam obsah www.example.com/blabla/

Hlavičky posílám takhle (pres socket)
$url = parse_url($url);

    if (!isset($url['port'])) {
      if ($url['scheme'] == 'http') { $url['port']=80; }
      elseif ($url['scheme'] == 'https') { $url['port']=443; }
    }
    $url['query']=isset($url['query'])?$url['query']:'';

    $url['protocol']=$url['scheme'].'://';
    $eol="\r\n";

 $headers =  "GET ".$url['protocol'].$url['host'].$url['path']." HTTP/1.0".$eol.
                "Host: ".$url['host'].$eol.
                "Referer: ".$url['protocol'].$url['host'].$url['path'].$eol.
                "Content-Type: application/x-www-form-urlencoded".$eol.
                "Content-Length: ".strlen($url['query']).$eol.
                $eol.$url['query'];

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: