Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Curl i HTTPS
Forum PHP.pl > Forum > Przedszkole
Manderigon
Witam.
Posiadam pewien kawałek kodu, który nie za bardzo chce ze mną współpracować:

  1. <?php
  2. error_reporting(E_ALL|E_STRICT);
  3. ini_set('display_errors', '1');
  4.  
  5. $ch = curl_init();
  6. curl_setopt($ch, CURLOPT_URL, "https://m.dziennik.librus.pl/module/Common/action/Login");
  7. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  8. curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
  9. curl_setopt($ch, CURLOPT_COOKIEJAR, dirname(__FILE__).'tmp'); // replace this with /tmp or something like that
  10. curl_setopt($ch, CURLOPT_HEADER, 0);
  11. curl_setopt($ch, CURLOPT_POST, true);
  12.  
  13. $data = array(
  14. 'login' => 'login',
  15. 'passwd' => 'haslo',
  16. 'sessionRedirectUrl' => 'https://m.dziennik.librus.pl/module/Common/action/News'
  17. );
  18.  
  19. curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
  20. $output = curl_exec($ch);
  21. $info = curl_getinfo($ch);
  22. curl_close($ch);
  23.  
  24. echo $output; // you should see your profile page
  25. ?>


pola nazywają się 'login' i 'passwd'. Co w tym kodzie jest nie tak? Próbowałem też innych kodów z googli, każdy modyfikowałem na 'swoje' i nic.
Pzdr.
mlawnik
chmod na pliku cookie, zainstalowany curl, jakis błąd? Może brakło ukrytego pola?

Ps: Piszę coś podobnego, tylko dla innego dziennika.
Kod: https://github.com/marcinlawnik/DziennikLog...aDownloader.php
Manderigon
Wyświetla się biała strona, czyli nic. Nie umiem programowania obiektowego w php, więc praktycznie nic nie rozumiem. Pracuję na XAMPP'ie, więc chmodów nie ma.
_Borys_
Dodaj
  1. curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);

chyba, że masz certyfikat ssl, to wtedy musisz podać ścieżkę do niego.
mlawnik
Dodaj sobie wywołania echo pomiędzy każdym poleceniem.
Sprawdź, czy masz zainstalowany mod_curl.

Stara wersja nie-OOP:
https://github.com/marcinlawnik/DziennikLog...aDownloader.php

Góra ma rację, to może być certyfikat wink.gif
Manderigon
Teraz wyskakuje mi okno logowania:

  1. <?php
  2. error_reporting(E_ALL|E_STRICT);
  3. ini_set('display_errors', '1');
  4.  
  5. $ch = curl_init();
  6. curl_setopt($ch, CURLOPT_URL, "https://m.dziennik.librus.pl/module/Common/action/Login");
  7. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  8. curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
  9. curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
  10. curl_setopt($ch, CURLOPT_COOKIEJAR, dirname(__FILE__).'tmp'); // replace this with /tmp or something like that
  11. curl_setopt($ch, CURLOPT_HEADER, 0);
  12. curl_setopt($ch, CURLOPT_POST, true);
  13.  
  14. $data = array(
  15. 'login' => '',
  16. 'passwd' => '',
  17. 'sessionRedirectUrl' => 'https://m.dziennik.librus.pl/module/Common/action/News'
  18. );
  19.  
  20. curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
  21. $output = curl_exec($ch);
  22. $info = curl_getinfo($ch);
  23. curl_close($ch);
  24.  
  25. echo $output; // you should see your profile page
  26. ?>
jackraymund
  1. curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
  2. curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);

po wyslaniu requesta sprawdz co zwraca curl_error()
  1. echo curl_error($ch);
Manderigon
Nic nie zwraca.

@ref
mlawnik
Nic nie zwraca, bo zalogowało i nie przechodzisz dalej.
jackraymund
najlepiej to sprawdzić co zwraca ustawiając(sprawdzić http_code(czasami curl_getinfo nie zwraca danych nagłówka, dlatego lepiej go wyrysować biggrin.gif)
  1. curl_setopt($ch, CURLOPT_HEADER, 1);
  2. curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0);

+ dodanie logowania poczynań curla(jak nie wiesz co jest grane to zawsze tego uzywaj)
  1. $fp_err = fopen('verbose_file.txt', 'ab+');
  2. fwrite($fp_err, date('Y-m-d H:i:s') . "\n\n");
  3. curl_setopt($zapytanie, CURLOPT_STDERR, $fp_err);
  4. curl_setopt($zapytanie, CURLOPT_VERBOSE, 1);

jak nadal nie wiesz co nie tak, to wyślij ten log tutaj
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.