Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: cURL: logowanie się do onetu
Forum PHP.pl > Forum > PHP
kordian
Witam,

Chcę zalogować się do poczty za pomocą php. Wybrałem sobie onet i wydaje mi się, że wszystko przebiega prawidłowo, ale nie dostaję w wyniku jego uruchomienia strony z mailami.

  1. function getContacts($login, $password){
  2. $cookie = "onet.txt";
  3. $curl = curl_init('http://poczta.onet.pl/');
  4.  
  5. curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
  6. curl_setopt($curl, CURLOPT_REFERER, "http://poczta.onet.pl/login.html");
  7. curl_setopt($curl, CURLOPT_HEADER, 1);
  8. curl_setopt($curl, CURLOPT_POST, true);
  9. curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
  10. curl_setopt($curl, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)");
  11. curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
  12. curl_setopt($curl, CURLOPT_COOKIEFILE, $cookie);
  13. curl_setopt($curl, CURLOPT_COOKIEJAR, $cookie);
  14. curl_setopt($curl, CURLOPT_REFERER, "http://poczta.onet.pl/");
  15. curl_setopt($curl, CURLOPT_POSTFIELDS, 'e='.$login.'&m=0&ok=0&ver=0&r=&p='.$password.'&x=0&y=0&perm=0');
  16. $result = curl_exec($curl);
  17.  
  18. curl_close ($curl);
  19. return $result;
  20. }
  21.  
  22. $z = getContacts("login", "hasło");
  23. print_r($z);


W wyniku wykonania dostaję takie nagłówki:

HTTP/1.1 302 Found Server: nginx Date: Thu, 08 Oct 2009 21:46:44 GMT Content-Type: text/html; charset=iso-8859-2 Transfer-Encoding: chunked Connection: close Cache-Control: no-cache, must-revalidate, post-check=0, pre-check=0 Pragma: no-cache Expires: Wed, 08 Oct 2008 21:50:10 GMT Location: folder.html P3P: CP="ALL DSP COR IVD IVA PSD PSA TEL TAI CUS ADM CUR CON SAM OUR IND" HTTP/1.1 302 Found Server: nginx Date: Thu, 08 Oct 2009 21:46:44 GMT Content-Type: text/html; charset=iso-8859-2 Transfer-Encoding: chunked Connection: keep-alive Cache-Control: no-cache, must-revalidate, post-check=0, pre-check=0 Pragma: no-cache Expires: Wed, 08 Oct 2008 21:50:03 GMT Location: http://poczta.onet.pl/login.html P3P: CP="ALL DSP COR IVD IVA PSD PSA TEL TAI CUS ADM CUR CON SAM OUR IND" HTTP/1.1 200 OK Server: nginx Date: Thu, 08 Oct 2009 21:46:44 GMT Content-Type: text/html; charset=iso-8859-2 Connection: keep-alive Pragma: no-cache Expires: Wed, 08 Oct 2008 21:50:03 GMT Vary: Accept-Encoding Cache-Control: max-age=90 Content-Length: 10053

i nic poza tym. Może ktoś się orientuje, co robię źle?
Dumdas
  1. echo $result

zamiast
  1. return $result
kordian
Cytat(Dumdas @ 9.10.2009, 15:23:20 ) *
  1. echo $result

zamiast
  1. return $result


No, ale co to zmieni? Tylko tyle, że wcześniej będę wyświetlał $result
Dumdas
Wróć, niedopatrzenie. Return dałeś wew. funkcji, czyli dobrze.
---------------------------
  1. curl_setopt($curl, CURLOPT_HEADER, 1);

To powoduje wyświetlenie nagłówków.
Daj to na 0.
Potem curl_error() i napisz, co wyświetla.

BTW. Mi się normalnie wyświetla strona logowania do poczty.
Fifi209
Jeżeli coś Ci nie idzie z curl zawsze warto użyć Live HTTP headers (dodatek do FF) i będziesz wiedział jakie nagłówki tam lecą.
kordian
Cytat(Dumdas @ 10.10.2009, 09:53:58 ) *
To powoduje wyświetlenie nagłówków.
Daj to na 0.
Potem curl_error() i napisz, co wyświetla.

BTW. Mi się normalnie wyświetla strona logowania do poczty.


O co mi chodzi. Chcę wysłać dane logowania metodą post, jak na stronie http://poczta.onet.pl/login.html i przejść do mojej poczty, czyli dokładnie tak, jak to robi się za pomocą przeglądarki. curl_error mi nic nie wyświetla, bo nie ma błędów. Po prostu zamiast wjeść do strony z moimi mailami widzę stronę logowania tak, jakbym w ogóle nie wysyłał postem danych do logowania.


Dumdas
No to wyświetla Ci stronę logowania, czy
Cytat
HTTP/1.1 302 Found Server: nginx Date: Thu, 08 Oct 2009 21:46:44 GMT Content-Type: text/html; charset=iso-8859-2 Transfer-Encoding: chunked Connection: close Cache-Control: no-cache, must-revalidate, post-check=0, pre-check=0 Pragma: no-cache Expires: Wed, 08 Oct 2008 21:50:10 GMT Location: folder.html P3P: CP="ALL DSP COR IVD IVA PSD PSA TEL TAI CUS ADM CUR CON SAM OUR IND" HTTP/1.1 302 Found Server: nginx Date: Thu, 08 Oct 2009 21:46:44 GMT Content-Type: text/html; charset=iso-8859-2 Transfer-Encoding: chunked Connection: keep-alive Cache-Control: no-cache, must-revalidate, post-check=0, pre-check=0 Pragma: no-cache Expires: Wed, 08 Oct 2008 21:50:03 GMT Location: http://poczta.onet.pl/login.html P3P: CP="ALL DSP COR IVD IVA PSD PSA TEL TAI CUS ADM CUR CON SAM OUR IND" HTTP/1.1 200 OK Server: nginx Date: Thu, 08 Oct 2009 21:46:44 GMT Content-Type: text/html; charset=iso-8859-2 Connection: keep-alive Pragma: no-cache Expires: Wed, 08 Oct 2008 21:50:03 GMT Vary: Accept-Encoding Cache-Control: max-age=90 Content-Length: 10053
....
Jak stronę logowania, to ok. Możesz pewnie przejść już do swojej poczty drugim curl_init'em.
kordian
Cytat(fifi209 @ 10.10.2009, 11:31:43 ) *
Jeżeli coś Ci nie idzie z curl zawsze warto użyć Live HTTP headers (dodatek do FF) i będziesz wiedział jakie nagłówki tam lecą.


Zainstalowałem, widzę, dzięki smile.gif Tam leci więcej nagłówków niż pokazuje mi curl_setopt($curl, CURLOPT_HEADER, 1); Tak, jakby później było wywołanie innej strony. Muszę się temu przyjrzeć.
Kildyt
Do zarządzania pocztą polecam imap.
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.