Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [cURL] Problem z funkcją zastępująca FOLLOW_LOCATION
Forum PHP.pl > Forum > PHP
Qwak
Hej!
Na moim hostingu jest włączony safe_mode przez co nie mogę korzystać z dobrodziejstw opcji FOLLOW_LOCATION biblioteki cURL. Więc postanowiłem napisać swoją funkcję przeznaczoną do tego:
  1. //przygotowanie handlera curl
  2. function prepareHand() {
  3. $hand = curl_init();
  4. curl_setopt($hand, CURLOPT_USERAGENT,'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13');
  5. curl_setopt($hand, CURLOPT_COOKIEJAR, file_cookie);
  6. curl_setopt($hand, CURLOPT_COOKIEFILE, file_cookie);
  7. curl_setopt($hand, CURLOPT_RETURNTRANSFER, true);
  8. curl_setopt($hand, CURLOPT_AUTOREFERER, true);
  9. return $hand;
  10. }
  11. function redirect($hand) {
  12. curl_setopt($hand, CURLOPT_HEADER, true);
  13. curl_setopt($hand, CURLOPT_REFERER, REFERER
  14. echo curl_getinfo($hand, CURLINFO_EFFECTIVE_URL);
  15. print_r (curl_getinfo($hand));
  16. $http_code = curl_getinfo($hand, CURLINFO_HTTP_CODE);
  17. if ($http_code == 302) {
  18. $pattern = '@Location: (.*?)\n@';
  19. if(preg_match($pattern, $source, $found)) {
  20. $redirect = ($found[1]);
  21. $hand = prepareHand();
  22. curl_setopt($hand, CURLOPT_REFERER, 'REFERER');
  23. curl_setopt($hand, CURLOPT_HEADER, true);
  24. curl_setopt($hand, CURLOPT_COOKIEFILE, false);
  25. curl_setopt($hand, CURLOPT_URL, 'HOST'.$redirect);
  26. echo '<br />------------------------------<br />';
  27. echo curl_exec($hand);
  28. file_put_contents('dupa.txt', implode(PHP_EOL, curl_getinfo($hand)));
  29. }
  30. }
  31. return false;
  32. }

Tam gdzie mam HOST i REFERER to podaje automatycznie adres strony. Problem w tym że server jakoś wychwytuje że coś jest nie tak i dostaje redirecta z JS na stronę główną. Do debugowania posłużyłem się FireBugiem i Tamper Date (dodatki do FF, może znacie coś lepszego? smile.gif ). Jeżeli na localhoscie uruchomie follow_location to śmiga aż miło.
Pozdrawiam i proszę o pomoc,
QWAK
PS: to dziewne zapisywanie do pliku to część debugu smile.gif
Quantum
Hej, kiedyś wykonywałem skrypt dla klienta i natknąłem się na ten sam problem. Użyłem wtedy funkcji curl_redir_exec, nie mam już tego skryptu, ale w google powinieneś znaleźć ją dopracowaną (niektóre nie działają na wszystkich platformach).
Qwak
Ok, wielkie dzięki za wszystkie odpowiedzi. Okazało się że skrypt jest w porządku winksmiley.jpg Problem był ze stroną którą otwierałem ale już sobie poradziłem.
Pozdrawiam
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.