Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Logowanie do Ogame
Forum PHP.pl > Forum > PHP
Xaar
Witam,

od dłuuugiego czasu walczę z logowaniem do Ogam - klon Ogame. Nie rozumiem problemu. Wzorowałem się tym działającym skrypcie do zalogowania na nasza klasę: TOPIC

Mój skrypt wygląda następująco:
  1. <?php
  2. $cookie_file = tempnam("tmp", "cookies");
  3.  
  4. $c = curl_init('http://ogam.net.pl/');
  5. curl_setopt($c, CURLOPT_COOKIEJAR, $cookie_file);
  6. curl_setopt($c, CURLOPT_COOKIEFILE, $cookie_file);
  7. curl_setopt($c, CURLOPT_URL, 'http://ogam.net.pl/login.php');
  8. curl_setopt($c, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.8.1.12) Gecko/20080201 Firefox/2.0.0.12;MEGAUPLOAD 1.0");
  9. curl_setopt($c, CURLOPT_POST, 1);
  10. curl_setopt($c, CURLOPT_POSTFIELDS,
  11. 'timestamp=1173621187&v=2&username=xaar&password=******&Uni=ogam.net.pl%2Fs1%2Flogin.php&submit=Login');
  12. curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
  13. curl_getinfo($c);
  14. $s = curl_exec($c);
  15. curl_close($c);
  16.  
  17. $ch = curl_init();
  18. $url = 'http://ogam.net.pl/s1/overview.php';
  19. curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);
  20. curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);
  21. curl_setopt($ch, CURLOPT_URL, $url);
  22. curl_setopt($ch, CURLOPT_HEADER, 0);
  23. curl_setopt($ch, CURLOPT_COOKIE, $cookie);
  24. curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.8.1.12) Gecko/20080201 Firefox/2.0.0.12;MEGAUPLOAD 1.0");
  25. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  26. $site = curl_exec($ch);
  27. echo $site;
  28. ?>


Dostaję komunikat, że użytkownik nie jest zalogowany poprawnie.
Byłbym wdzięczny za wskazanie błędu.

Jakieś pomysły?
Albo przynajmniej ogólny kierunek co może być źle?
djstrong
1. bodajże niepełne urlencode w POST
2. brak pełnych nagłówków przeglądarki, przez co mogą blokować
3. za pewne trzeba coś inaczej/jeszcze zrobić
ddiceman
Zmien tez timestamp
w
  1. <?php
  2. curl_setopt($c, CURLOPT_POSTFIELDS,
  3. 'timestamp=1173621187&v=2&username=xaar&password=******&Uni=ogam.net.pl%2Fs1%2Flogin.php&submit=Login');
  4. ?>

na aktualniejszy - domyslam sie, ze skoro jest ten parametr uzywany, to z jakiegos powodu - np. do weryfikacji, czy sesja nie wygasla etc. Sprobuj tam wstawic po prostu time();:
  1. <?php
  2. curl_setopt($c, CURLOPT_POSTFIELDS,
  3. 'timestamp='.time().'&v=2&username=xaar&password=******&Uni=ogam.net.pl%2Fs1%2Flogin.php&submit=Login');
  4. ?>
Xaar
Sprawdzałem za pomocą Live HTTP i timestamp zawsze przy logowaniu idzie ten sam.
djstrong
Cytat(Xaar @ 10.02.2009, 09:46:22 ) *
Sprawdzałem za pomocą Live HTTP i timestamp zawsze przy logowaniu idzie ten sam.

No to jak wiesz jak to się robi, to zrób w php żeby dokładnie taki sam pakiet poleciał. Czyli te wszystkie nagłówki przeglądarki itd.
Może wystarczy sam referer.
ddiceman
Czestym bledem jest jeszcze fakt, ze nie mozesz zapisac danych o sesji do COOKIEFILE/COOKIEJAR : wyswietl sobie na koncu gdzies $cookie_file i zobacz, czy zapisuja sie do niego dane sesji. CURL nie da Ci znac, ze ma z tym problem a fizycznie nie zadziala (bo nie przechwyci danych sesyjnych).
Nie wiem tez, czy serwer nie wysyla Ci redirecta, wiec moze jeszcze CURLOPT_FOLLOWLOCATION
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.