Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Logowanie CURL
Forum PHP.pl > Forum > Przedszkole
miras
Witam, temat kiedyś już poruszałem, dawno temu, ale muszę do tego wrócić.. muszę zrobić logowanie curl'em do dziennika elektronicznego, link:
http://uonet.vulcan.net.pl/001606 mój kod zwraca mi tylko 1 ... co tu jest nie tak?


  1. <?php
  2. $content = file_get_contents("https://uonet.vulcan.net.pl/001606/LoginPage.aspx?ReturnUrl=%2f001606%2fstart.aspx");
  3. $id=explode('<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="',$content);
  4. $ide = explode('" />',$id[1]);
  5.  
  6. $content1 = file_get_contents("https://uonet.vulcan.net.pl/001606/LoginPage.aspx?ReturnUrl=%2f001606%2fstart.aspx");
  7. $id1=explode('<input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="',$content1);
  8. $ide1 = explode('" />',$id1[1]);
  9.  
  10.  
  11.  
  12. function createPostString($aPostFields) {
  13. foreach ($aPostFields as $key => $value) {
  14. $aPostFields[$key] = urlencode($key) . '=' . urlencode($value);
  15. }
  16. return implode('&', $aPostFields);
  17. }
  18.  
  19. $input = array(
  20. 'ctl00$TheContentPlaceHolder$txtLogin' => 'x',
  21. 'ctl00$TheContentPlaceHolder$btLogin' => 'Logowanie',
  22. 'ctl00$TheContentPlaceHolder$txtPassword' => 'x',
  23. '__EVENTTARGET' => '',
  24. '__EVENTARGUMENT' => '',
  25. '__VIEWSTATE' => $ide[1],
  26. '__EVENTVALIDATION' => $ide1[1]
  27. );
  28.  
  29. $ch = curl_init();
  30. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0);
  31. curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
  32. curl_setopt($ch, CURLOPT_UNRESTRICTED_AUTH, 1);
  33. curl_setopt ($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)");
  34. curl_setopt($ch, CURLOPT_URL, "https://uonet.vulcan.net.pl/001606/LoginPage.aspx?ReturnUrl=%2f001606%2fstart.aspx");
  35. curl_setopt($ch, CURLOPT_POSTFIELDS, createPostString($input));
  36. $data=curl_exec($ch);
  37. curl_close($ch);
  38. echo $data;
  39. ?>
  40.  
  41.  
_Borys_
Spróbuj z obsługą ciastek
curl_setopt($ch, CURLOPT_COOKIEJAR, dirname(__FILE__) . '/cookies.txt');
oraz
curl_setopt($ch, CURLOPT_COOKIEFILE, dirname(__FILE__) . '/cookies.txt');
ale bez file_get_contents();
Najpierw łączysz się CURL-em, pobierasz stronę, wycinasz co chcesz potem drugi CURL-em wysyłasz odpowiednie dane.
miras
nie rozumiem kompletnie co mam zrobić..
_Borys_
  1. <?php
  2.  
  3. function createPostString($aPostFields)
  4. {
  5. foreach ($aPostFields as $key => $value)
  6. {
  7. $aPostFields[$key] = urlencode($key) . '=' . urlencode($value);
  8. }
  9. return implode('&', $aPostFields);
  10. }
  11. $ch = curl_init();
  12. curl_setopt($ch, CURLOPT_URL,"https://uonet.vulcan.net.pl/001606/LoginPage.aspx?ReturnUrl=%2f001606%2fstart.aspx");
  13. curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)");
  14. curl_setopt($ch, CURLOPT_HEADER, 1);
  15. curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
  16. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  17. curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
  18. curl_setopt($ch, CURLOPT_COOKIEJAR, dirname(__FILE__) . '/cookies.txt');
  19. curl_setopt($ch, CURLOPT_COOKIEFILE, dirname(__FILE__) . '/cookies.txt');
  20. $data = curl_exec($ch);
  21. if(curl_exec($ch) === false)
  22. {
  23. echo 'Curl error: ' . curl_error($ch);
  24. }
  25.  
  26. //echo $data;
  27. curl_close($ch);
  28. // tu wycinasz potrzebne dane ze źródła strony, z $data, przy pomocy explode() czy jak tam
  29. // które umieszczasz w $input
  30. $input = array(
  31. 'ctl00$TheContentPlaceHolder$txtLogin' => 'x',
  32. 'ctl00$TheContentPlaceHolder$btLogin' => 'Logowanie',
  33. 'ctl00$TheContentPlaceHolder$txtPassword' => 'x',
  34. '__EVENTTARGET' => '',
  35. '__EVENTARGUMENT' => '',
  36. '__VIEWSTATE' => $ide[1],
  37. '__EVENTVALIDATION' => $ide1[1]);
  38.  
  39. $ch = curl_init();
  40. curl_setopt($ch, CURLOPT_URL,"https://uonet.vulcan.net.pl/001606/LoginPage.aspx?ReturnUrl=%2f001606%2fstart.aspx");
  41. curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)");
  42. curl_setopt($ch, CURLOPT_HEADER, 0);
  43. curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
  44. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  45. curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
  46. curl_setopt($ch, CURLOPT_COOKIEFILE, dirname(__FILE__) . '/cookies.txt');
  47. curl_setopt($ch, CURLOPT_COOKIEJAR, dirname(__FILE__) . '/cookies.txt');
  48. curl_setopt($ch, CURLOPT_POST, 1);
  49. curl_setopt($ch, CURLOPT_POSTFIELDS, createPostString($input));
  50. $data_logged_site = curl_exec($ch);
  51. if(curl_exec($ch) === false)
  52. {
  53. echo 'Curl error: ' . curl_error($ch);
  54. }
  55.  
  56. echo $data_logged_site;
  57. curl_close($ch);
  58.  
  59. ?>

Jak nie utworzy pliku cookies.txt to utwórz ręcznie obok tego skryptu.
Nie wiem czy te dane ze źródła strony wystarczą, javascript próbuje coś mieszać przed wysłaniem formularza a wtedy to już będzie problem.
miras
hmm, coś zadziałało - natomiast nie do końca, plik utworzył się sam, a jego zawartość to:

  1. # Netscape HTTP Cookie File
  2. # This file was generated by libcurl! Edit at your own risk.
  3.  
  4. uonet.vulcan.net.pl FALSE / FALSE 0 _uonet_config551432 9ZdAPnSe5NXdmnkwTm%2f67vziEdejnS%2fZvwm9%2fLC2YCQ%3d
  5. #HttpOnly_uonet.vulcan.net.pl FALSE / FALSE 0 UONETI pnx5qoorsf4momlpv0v2x0cn
  6.  


to mi wyskakuje po wykonaniu skryptu: http://bpmobile.pl/dziennik/


dane do logowania - podeślę Ci na PW.

a obecnie kod wygląda tak:


  1. <?php
  2.  
  3. function createPostString($aPostFields)
  4. {
  5. foreach ($aPostFields as $key => $value)
  6. {
  7. $aPostFields[$key] = urlencode($key) . '=' . urlencode($value);
  8. }
  9. return implode('&', $aPostFields);
  10. }
  11. $ch = curl_init();
  12. curl_setopt($ch, CURLOPT_URL,"https://uonet.vulcan.net.pl/001606/LoginPage.aspx?ReturnUrl=%2f001606%2fstart.aspx");
  13. curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)");
  14. curl_setopt($ch, CURLOPT_HEADER, 1);
  15. curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
  16. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  17. curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
  18. curl_setopt($ch, CURLOPT_COOKIEJAR, dirname(__FILE__) . '/cookies.txt');
  19. curl_setopt($ch, CURLOPT_COOKIEFILE, dirname(__FILE__) . '/cookies.txt');
  20. $data = curl_exec($ch);
  21. if(curl_exec($ch) === false)
  22. {
  23. echo 'Curl error: ' . curl_error($ch);
  24. }
  25.  
  26.  
  27. curl_close($ch);
  28.  
  29. $id=explode('<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="',$data);
  30. $ide = explode('" />',$id[1]);
  31. $id1=explode('<input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="',$data);
  32. $ide1 = explode('" />',$id1[1]);
  33.  
  34.  
  35. $input = array(
  36. 'ctl00$TheContentPlaceHolder$txtLogin' => 'x',
  37. 'ctl00$TheContentPlaceHolder$btLogin' => 'Logowanie',
  38. 'ctl00$TheContentPlaceHolder$txtPassword' => 'x',
  39. '__EVENTTARGET' => '',
  40. '__EVENTARGUMENT' => '',
  41. '__VIEWSTATE' => $ide[0],
  42. '__EVENTVALIDATION' => $ide1[0]);
  43.  
  44. $ch = curl_init();
  45. curl_setopt($ch, CURLOPT_URL,"https://uonet.vulcan.net.pl/001606/LoginPage.aspx?ReturnUrl=%2f001606%2fstart.aspx");
  46. curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)");
  47. curl_setopt($ch, CURLOPT_HEADER, 0);
  48. curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
  49. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  50. curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
  51. curl_setopt($ch, CURLOPT_COOKIEFILE, dirname(__FILE__) . '/cookies.txt');
  52. curl_setopt($ch, CURLOPT_COOKIEJAR, dirname(__FILE__) . '/cookies.txt');
  53. curl_setopt($ch, CURLOPT_POST, 1);
  54. curl_setopt($ch, CURLOPT_POSTFIELDS, createPostString($input));
  55. $data_logged_site = curl_exec($ch);
  56. if(curl_exec($ch) === false)
  57. {
  58. echo 'Curl error: ' . curl_error($ch);
  59. }
  60.  
  61. echo $data_logged_site;
  62. curl_close($ch);
  63.  
  64. ?>


Jestem w stanie zapłacić za pomoc..
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.