Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [cUrl][PHP]cURL i niechciane automatyczne przekierowanie
Forum PHP.pl > Forum > Przedszkole
swing
Witam
Potrzebuję kod, który będzie wpisywał identyczną treść na moich dwóch forach.
W tej chwili działa on tak, że: loguje się na pierwszym forum i przesyła treść. I tu zaczyna się problem, bo forum automatycznie przekierowuje mnie do strony z moim nowym postem, przez co przeglądarka opuszcza mój skrypt i treść nie jest wysyłana do drugiego forum.
Czy może macie pomysł co powinienem zrobić, żeby to automatyczne przekierowanie nie zadziałało, albo po prostu żeby mój skrypt działał dalej?
Crozin
Ustaw opcję FOLLOW_REDIRECTS (czy jak ona się tam zwie) na FALSE.
cycofiasz
Czyżbyś wyświetlał htmla z odpowiedzi pierwszego forum?
swing
Serdeczne dzięki za ekspresową pomoc. Dla potomnych: chodziło nie o FOLLOW_REDIRECTS a CURLOPT_FOLLOWLOCATION (przynajmniej tak mi się wydaje, bo kiedy to ustawiłem na 0, skrypt zaczął działać. Dałem "Pomógł".

Edit:
Bawię się tym kodem i widzę jeszcze jedną dziwną rzecz.
Próbowałem go przerobić, żeby tym razem na jednym forum, edytował po kolei dziesięć moich tematów i wstawiał do nich taką samą treść.
O dziwo działa tylko do siódmego tematu. Nie użyłem pętli, tylko wkleiłem 10 razy identyczny kod (różnią się tylko adresem tematu do edycji), więc nie ma możliwości błędu w którymś z kroków. Po prostu jakby był limit na 7 edycji i koniec. Czym to może być spowodowane?
Wklejam kod edycji (cURL bawię się od dzisiaj, więc proszę o powagę closedeyes.gif ):
  1. <?
  2. $tresc='Moja tresc';
  3.  
  4. //loguje sie:
  5. $cookie = dirname(__FILE__) .'/cookie';
  6. if (isset($_GET['login'])){
  7. $login=$_GET['login'];
  8. } else {
  9. $login='';}
  10. if (isset($_GET['haslo'])){
  11. $haslo=$_GET['haslo'];
  12. } else {
  13. $haslo='';}
  14. $ch = curl_init("http://adres strony logowania na moim forum");
  15. curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie);
  16. curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie);
  17. curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
  18. curl_setopt($ch, CURLOPT_POST, 1);
  19. curl_setopt($ch, CURLOPT_POSTFIELDS, "login=mojlogin&password=mojehaslo");
  20. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  21. echo curl_exec($ch);
  22. curl_close($ch);
  23.  
  24. //edytuje:
  25.  
  26. $ch2 = curl_init("http://adres strony edycji pierwszego posta na moim forum");
  27. curl_setopt($ch2, CURLOPT_COOKIEFILE, $cookie);
  28. curl_setopt($ch2, CURLOPT_COOKIEJAR, $cookie);
  29. curl_setopt($ch2, CURLOPT_FOLLOWLOCATION, 0);
  30. curl_setopt($ch2, CURLOPT_POST, 1);
  31. curl_setopt($ch2, CURLOPT_POSTFIELDS, "nick=mojnick&forum_pagetext=$tresc&action=edit_post");
  32. curl_setopt($ch2, CURLOPT_RETURNTRANSFER, 1);
  33. echo curl_exec($ch2);
  34. curl_close($ch2);
  35. sleep(30); //dodalem opoznienie 30 sekund na probe
  36.  
  37. //powtarzam z linkiem do edycji drugiego tematu:
  38.  
  39.  
  40. $ch2 = curl_init("http://adres strony edycji drugiego posta na moim forum");
  41. curl_setopt($ch2, CURLOPT_COOKIEFILE, $cookie);
  42. curl_setopt($ch2, CURLOPT_COOKIEJAR, $cookie);
  43. curl_setopt($ch2, CURLOPT_FOLLOWLOCATION, 0);
  44. curl_setopt($ch2, CURLOPT_POST, 1);
  45. curl_setopt($ch2, CURLOPT_POSTFIELDS, "nick=mojnick&forum_pagetext=$tresc&action=edit_post");
  46. curl_setopt($ch2, CURLOPT_RETURNTRANSFER, 1);
  47. echo curl_exec($ch2);
  48. curl_close($ch2);
  49. sleep(30); //dodalem opoznienie 30 sekund na probe
  50.  
  51. //dalej jest to powtarzane jeszcze 8 razy
  52.  
  53. ?>
  54.  


Pewnie czegoś brakuje, coś jest niepotrzebne, ale jak mówiłem dopiero próbuję się poznać z czym to się je.
cycofiasz
Być może upłynął timeout działania skryptu (zazwyczaj 1 minuta) lub zadziałało zabezpieczenie antyfloodowe na tym forum. Daj na początku taki kod:

  1. ini_set('display_errors','On');
wNogachSpisz
Bleh.
PEAR:HTTP_Request2
swing
Cytat(cycofiasz @ 26.10.2011, 18:23:43 ) *
Być może upłynął timeout działania skryptu (zazwyczaj 1 minuta) lub zadziałało zabezpieczenie antyfloodowe na tym forum. Daj na początku taki kod:
  1. ini_set('display_errors','On');


Niestety nie pomogło.
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.