Autor | Zpráva | ||
---|---|---|---|
Nercom Profil * |
#1 · Zasláno: 25. 8. 2016, 11:56:22
Načítám z XML různé URL adresy s obrázky, které potřebuji zpracovávat a narazil jsem nyní na problém. Několik URL adres je sice s HTTP, ale mají tam 301 přesměrování na HTTPS. Jak mohu CURL scriptu říci, aby v případě přesměrování data až po přesměrování získal.
Nyní místo zdrojáku pro obrázek získávám toto: <html> <head><title>301 Moved Permanently</title></head> <body bgcolor="white"> <center><h1>301 Moved Permanently</h1></center> <hr><center>nginx</center> </body> </html> Můj CURL script: $header=array( 'User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:25.0) Gecko/20100101 Firefox/25.0', 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 'Accept-Language: cs,en-us;q=0.7,en;q=0.3', 'Accept-Charset: ISO-8859-1,windows-1250,utf-8;q=0.7,*;q=0.7', 'Keep-Alive: 115', 'Connection: keep-alive',); $url_image = "http://slevoking.cz/images/static/2016-Azkc.jpg"; // příklad, který jsem našel pro použití $ch = curl_init($url_image); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 0); curl_setopt($ch, CURLOPT_TIMEOUT, 15); curl_setopt($ch, CURLOPT_HTTPHEADER, $header); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($ch, CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_ENCODING, '' ); $image_file = curl_exec($ch); curl_close($ch); Díky moc za rady. |
||
juriad Profil |
#2 · Zasláno: 25. 8. 2016, 12:02:01
To už jsi nastavil pomocí CURLOPT_FOLLOWLOCATION. Ten tvůj příklad přímo stáhne ten obrázek, bez 10. řádky to stáhne HTML stránku s přesměrováním.
|
||
mckay Profil |
Vzhledem k tomu, že tvrdíte, že Vám to nefunguje tak jak to máte, zkontroloval bych možné příčiny:
1. open_base_dir (php.ini) - pokud je vyplněn CURLOPT_FOLLOWLOCATION není povoleno
2. zapnutý safe_mode - taktéž nebude fungovat
Řešením pak bude buď použít jiný způsob získávání obsahu. Aby Vám to fungovalo s přesměrováním, je možné použít file_get_contents funkci s kontextem. Například takto:
$context = stream_context_create( array( 'http' => array( 'follow_location' => false ) ) ); $pic = file_get_contents('http://www.example.com/', false, $context); // Obsahuje obrázek var_dump($http_response_header); // Hlavičky Edit: Svět je strašně malý. Zrovna dnes jsem shodou okolností hledal něco s tímto souvisejícího. |
||
Časová prodleva: 5 dní
|
|||
mckay Profil |
#4 · Zasláno: 30. 8. 2016, 12:24:22
Nemohu již upravit příspěvek, tak jen dodávám, že je třeba upravit hodnotu indexu
follow_location z false na true (právě proto, aby to fungovalo pro Váš případ).
|
||
Časová prodleva: 8 let
|
0