Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Problemy z cURL
Forum PHP.pl > Forum > Przedszkole
neotorrent
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
jaslanin
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ć
wNogachSpisz
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.
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.