[PHP] Jak sprawdzić pod jaki adres zostanę przekierowany?


(Przemekbaranowski) #1

Witam. mam taką funkcję:

function get_url_contents($url){

 $crl = curl_init();

 $timeout = 5;

 curl_setopt ($crl, CURLOPT_URL,$url);

 curl_setopt ($crl, CURLOPT_RETURNTRANSFER, 1);

 curl_setopt ($crl, CURLOPT_CONNECTTIMEOUT, $timeout);

 $ret = curl_exec($crl);

 curl_close($crl);

 return $ret;

}

jako parametr daję zapytanie do wyszukiwarki, jak sprawdzić pod jaki adres zostanę przekierowany (np gdy wyszukiwarka nie wyświetli listy wyników, tylko od razu przejdzie do strony z wynikiem? )


(Copycona) #2

Na dobry początek.

manual curl_setopt mówi:

Na co cyfra? Co prawda będzie tam automatyczne rzutowanie, ale nie można od razu wstawić TRUE? Ma być typ bool.

do czego służy tutaj ta dodatkowa zmienna? nie można było od razu wstawić tej wartości?

Przechodząc do właściwego tematu. Warto przejrzeć co oferują te funkcje:

http://www.php.net/manual/pl/function.curl-setopt.php

http://www.php.net/manual/pl/function.curl-getinfo.php

W przykładach zastosuję stronę http://google.pl, ponieważ zwraca ona kod odpowiedzi 301 i przekierowuje na http://www.google.pl

  1. CURLOPT_HEADER ustawione na true zwróci w wyniku także otrzymany nagłówek odpowiedzi. Wydobyć adres przekierowania z treści można przy użyciu wyrażeń regularnych (regexp). więcej o regexpach: http://php.net/manual/pl/book.pcre.php

przykład:

<?phpfunction get_url_contents($url){$ch = curl_init();curl_setopt($ch, CURLOPT_URL,$url);curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);curl_setopt($ch, CURLOPT_HEADER, TRUE);curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);$o = curl_exec($ch);curl_close($ch);$o;