Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Problemy z cURL
neotorrent
post 20.06.2012, 16:56:24
Post #1





Grupa: Zarejestrowani
Postów: 39
Pomógł: 0
Dołączył: 14.08.2011

Ostrzeżenie: (0%)
-----


Witam męcze się ostatnio z cURL masakrycznie i nie mogę dojść do ładu.
Mianowicie potrzebuje coś takiego:
1. Loguje się na stronę
2. Dodaję ogłoszenie

Moje skrawki kodu
Logowanie:
  1. $fp = fopen("cookie.txt", "w");
  2. fclose($fp);
  3. $login = curl_init();
  4. curl_setopt($login, CURLOPT_COOKIEJAR, "cookie.txt");
  5. curl_setopt($login, CURLOPT_COOKIEFILE, "cookie.txt");
  6. curl_setopt($login, CURLOPT_TIMEOUT, 40000);
  7. curl_setopt($login, CURLOPT_RETURNTRANSFER, TRUE);
  8. curl_setopt($login, CURLOPT_URL, "http://www.konin.lm.pl/");
  9. curl_setopt($login, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
  10. curl_setopt($login, CURLOPT_FOLLOWLOCATION, TRUE);
  11. curl_setopt($login, CURLOPT_POST, TRUE);
  12. curl_setopt($login, CURLOPT_POSTFIELDS, 'login=nssss24&password=pwww8');
  13. curl_exec ($login);
  14. curl_close ($login);

Formularz:
  1. $postFields['form_algorytm'] = '436cca6e3689f4177c13f446c9b65ba6';
  2. $postFields['ver'] = '1';
  3. $postFields['base_kategoria'] = '13774';
  4. $postFields['base_tytul'] = 'Taczka Dziwaczka';
  5. $postFields['base_tresc'] = 'Sprzedam odjazdowa taczke';
  6. $postFields['base_autor'] = 'Ja';
  7. $postFields['base_email'] = 'kontakt@kontakt.pl';
  8. $postFields['base_google_tak'] = '0';
  9. $postFields['zgoda'] = '1';
  10.  
  11. $ch = curl_init('http://www.konin.lm.pl/ogloszenia/dodaj/13774');
  12. curl_setopt($ch, CURLOPT_POST, 1);
  13. curl_setopt($ch, CURLOPT_POSTFIELDS, $postFields); //wypelnia pola
  14. curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
  15. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  16. echo curl_exec($ch);
  17. curl_close($ch);

I ten kawałek też nie trybi coś brakuje mi submit i nie wiem jak sobie z Tym poradzić ;/
Jak to skleić do kupy ? Żeby wszystko trybiło

Ten post edytował neotorrent 20.06.2012, 18:16:31
Go to the top of the page
+Quote Post
jaslanin
post 20.06.2012, 19:02:28
Post #2





Grupa: Zarejestrowani
Postów: 511
Pomógł: 143
Dołączył: 13.03.2010
Skąd: Jasło

Ostrzeżenie: (0%)
-----


aby się zalogować można użyć kodu:

  1. <?php
  2.  
  3. $ch = curl_init();
  4. curl_setopt($ch, CURLOPT_URL, 'http://www.lm.pl');
  5.  
  6. $login_data = array();
  7. $login_data['logowanie_ok'] = 'lm';
  8. $login_data['login'] = 'sdag4';
  9. $login_data['password'] = 'asd123';
  10. $login_data['x'] = '47';
  11. $login_data['y'] = '9';
  12.  
  13. curl_setopt($ch, CURLOPT_POST, TRUE);
  14. curl_setopt($ch, CURLOPT_POSTFIELDS, $login_data);
  15. curl_setopt($ch, CURLOPT_HEADER, FALSE);
  16. curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
  17. curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
  18. curl_setopt($ch, CURLOPT_COOKIEJAR, tempnam("/tmp", "curl_LM"));
  19. curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
  20. curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.56 Safari/536.5");
  21. $response = curl_exec($ch);
  22.  
  23. echo $response;
  24.  
  25. ?>


jak widać nie uzupełniłeś wszystkich danych niezbędnych do zalogowania dlatego nie zadziałało, aby sprawdzić dane jakie należy wysłać najlepiej użyć fiebuga w zakładce sieć


--------------------
Good luck and happy PHP'ing
Go to the top of the page
+Quote Post
wNogachSpisz
post 21.06.2012, 10:45:27
Post #3





Grupa: Zarejestrowani
Postów: 1 233
Pomógł: 87
Dołączył: 6.03.2009

Ostrzeżenie: (40%)
XX---


Przepraszam za offtopic.
Moim skromnym zdaniem, CURL nie oferuje odpowiedniego poziomu abstrakcji do takich zabaw i ogólnie korzystanie z niego to jakiś koszmar, beznadziejne API, beznadziejna dokumentacja.
Polecam PEAR:HTTP_Request2.

Osobiście wszelkiego rodzaju autoryzacje i korzystanie z formularzy załatwiam w następujący sposób:

Kod
casper.start('http://www.lm.pl', function() {
    this.fill('form', {
        'login': 'sdag4',
        'password': 'asd123'
    }, true);
});
źródło: http://casperjs.org/api.html#casper.fill

Prawda że uroczo?
Pięć linijek i jesteś zalogowany, zapamiętane zostają cookie, formularz zostaje wypełniony i wysłany niezależnie od tego czy znajdował się w statycznym markupie czy też został wygenerowany dynamicznie.

Ten post edytował wNogachSpisz 21.06.2012, 10:51:00
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 16.07.2025 - 13:40