Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Curl i logowanie
Forum PHP.pl > Forum > Przedszkole
jerry89
Witam, chcialbym się automatycznie zalogowac na daną storne za pomocą curl. Jestem poczatkujacy i napisałem a reczej zlepiłem cos takeigo:
CODE
function createPostString($aPostFields) {
foreach ($aPostFields as $key => $value) {
$aPostFields[$key] = urlencode($key) . '=' . urlencode($value);
}
return implode('&', $aPostFields);
}

$postFields['email'] = 'mojemail';
$postFields['password'] = 'haselko';
$ch = curl_init('https://www.strona/login.php?url=%2Fpodstrona.php');
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (X11; U; Linux i686; pl; rv:1.8.0.3) Gecko/20060426 Firefox/1.5.0.3');
curl_setopt($ch, CURLOPT_POSTFIELDS, createPostString($postFields));
curl_setopt( $ch, CURLOPT_POST, TRUE );

curl_exec($ch);
curl_close($ch);
?>


Jednak po odpaleniu skryptu w przeglądarcę widac jedynie stronę logowania danego aadresy wiec jak widać nie dziala. Co moze byc przyczyna? Nie za bardzo wiem jak sie za to zabrac..
Zmorcia
jeżeli próbujesz zalogować sie na nasza-klasa to nic z tego ;/
jerry89
Nie, nie jest to moim marzeniem i nie próbuje tego robic bo to nie jest mi potrzebne..smile.gif takze mogę liczyc na pomoc?questionmark.gif

Chcę dokopac się po prostu do dropped.pl/check3.php. Napisałem cos takiego ale nadal nie chce dzialac. Pojawia sie nadal ekran z logowaniem.Oto kod:

Kod
<?php
function curl_it($method, $target, $post_var=false){
  $ch = curl_init();
  curl_setopt($ch, CURLOPT_URL, $target);
  curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
  //curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookies.txt');
  curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookies.txt');

  if ($method == 'POST') {
      curl_setopt($ch, CURLOPT_POST, 1);
      curl_setopt($ch, CURLOPT_POSTFIELDS, $post_var);
  }

  $result = curl_exec($ch);
  curl_close($ch);
  return $result;
}


echo curl_it('', 'http://www.dropped.pl/login.php');

echo curl_it('POST', 'http://www.dropped.pl/login.php', 'do=1&url=/check3.php&email=mojemail&password=mojehaslo');
//lub echo curl_it('POST', 'http://www.dropped.pl/login.php', 'do=1&url=&email=mojemail&password=mojehaslo'); tez nie działa

echo curl_it('', 'http://www.dropped.pl/check3.php');
?>


A nizej formularz z login.php:
Kod
<form action="https://www.dropped.pl/login.php" method="post">
<input type="hidden" name="do" value="1">
<input type="hidden" name="url" value="">

<span style="float:left; padding: 1px; margin: 1px; ">
Adres email:
<br><input type="text" name="email" style="width:300px" class="inputg" value="niezdow@o2.pl">
</span>
<br clear="left">

<span style="float:left; padding: 1px; margin: 1px; ">
Hasło:
<br><input type="password" name="password" style="width:300px" class="inputg">
</span>
<br clear="left">


<p><input type="submit" value="Logowanie" class="inputb" style="margin: 2px; vertical-align: middle">
<a href="lostpass.php">Zapomniałem hasła</a>


</form>
than
Przegapiłeś że dane są wysyłane pod inny adres https://www.dropped.pl/login.php

@Zmorcia
Widzisz jakiś problem w takim logowaniu?
jerry89
Dzięki. wygląda na to ze teraz działa.smile.gif A mam jeszcze takie pytanie troche z innej beczki. Muszę w zmiennej wysłac kilka wartosci do formularza jednak te wartosci musza byc juz w nowych liniach kazdy. Jak to zrobic? Jak wstawic znak nowej linii?? Odrazu mówię że $zmienna='wartosc1\nwartosc2'; wysyła do formularze zwyczajnie wartosc1\nwartosc2' czyli niepoprawnie.

EDIT:
spoko juz sobie poradzilem, jakby ktos nie wiedział to do teog sluzy "\r\n".

N o i znow pojawił sie problem.. skrypt działał prawidlowo jednak teraz dostałem chyba jaiegos bana na konto albo nie wiem, po zadziałaniu/spawdzeniu jakiejkolwiek domeny w panelu dropped wywala mi biała strone...Ktos wie jak to ominąc?
than
Za mało wiemy smile.gif
jerry89
Mozesz sprecyzowac?
Działałem na skrypcie dostpenym po zalogowaniu w dropped.pl/check3.php do sprawdzania dostpenosci domen. Wszystko smigalo elegancko do pewnego momentu. Teraz zaczeło wywalać białą strone czy działam skryptem czy tez recznie wejde i sprawdze jakakolwiek domenke. Wiem ze na kolegi koncie nie wywala białej strony, jest ok. Zastanawiam sie wlasne czy to jakas blokada na konto ze strony serwisu czy co? Czy mogę ja jakos ominac, załozenie nowego konta wydaje sie byc rozwiazaniem ale na jak dlugo.. raczej niedlugo.
erix
Cytat
Zastanawiam sie wlasne czy to jakas blokada na konto ze strony serwisu czy co? Czy mogę ja jakos ominac, załozenie nowego konta wydaje sie byc rozwiazaniem ale na jak dlugo.. raczej niedlugo.

Sobie przecież odpowiedziałeś. tongue.gif Usługodawcy zabezpieczają się przed takimi praktykami.
than
Ograniczenie ilości zapytań też tam chyba jest, ale nie jestem pewien.
ebooki24
Zastanawialem sie wlasnie nad ta nasza-klasa, zalogowac moge sie normalnie w curlu, ale juz za bata nie moge w nim wyslac zaproszenia nikomu. W profilu jest button z jednym polem hidden t=(jakis kod) i wysyla dane do invite/numerid, gdy recznie wpisze nasza-klasa.pl/invite/numerid to blad 403, ale gdy w skrypcie wysle formularz tam z tym t=(jakis kod) to zwraca mi link z przekierowaniem na nasza-klasa.pl/friends i dalej nie wiem co z tym zrobic. Gdy uzytkownik klika w button to spowrotem przekierowuje go na profile/numerid

Wiecie o co chodzi i jak to mozna rozwiazac?
to moj kod:
  1. <?php
  2. function createPostString($aPostFields) {
  3.   foreach ($aPostFields as $key => $value) {
  4.       $aPostFields[$key] = urlencode($key) . '=' . urlencode($value);
  5.   }
  6.   return implode('&', $aPostFields);
  7. }
  8.  
  9. $postFields['login'] = 'xxx';
  10. $postFields['password'] = 'xxx';
  11. $ch = curl_init('http://nasza-klasa.pl/login');
  12. curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
  13. curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0)');
  14. curl_setopt($ch, CURLOPT_HTTPHEADER, array('Accept: image/gif, image/x-bitmap, image/jpeg, image/pjpeg', 'Connection: Keep-Alive', 'Content-type: application/x-www-form-urlencoded;charset=UTF-8'));
  15. curl_setopt($ch, CURLOPT_POSTFIELDS, createPostString($postFields));
  16. curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
  17. curl_setopt($ch, CURLOPT_COOKIESESSION, TRUE);
  18. curl_setopt($ch, CURLOPT_HEADER, 0);
  19. curl_setopt($ch, CURLOPT_COOKIEFILE, "cookies.txt");
  20. curl_setopt($ch, CURLOPT_COOKIEJAR, "cookies.txt");
  21. curl_setopt($ch, CURLOPT_COOKIE, session_name() . '=' . session_id());
  22. curl_exec($ch);
  23.  
  24.  
  25. curl_setopt($ch, CURLOPT_URL, "http://nasza-klasa.pl/profile/1234567");
  26. $result = curl_exec($ch);
  27. preg_match('#name="t" value="(.*?)"#', $result, $t);
  28.  
  29. $postFields['t'] = (string) $t[1];
  30. curl_setopt($ch, CURLOPT_POSTFIELDS, createPostString($postFields));
  31. curl_setopt($ch, CURLOPT_URL, "http://nasza-klasa.pl/invite/1234567");
  32. $result = curl_exec($ch);
  33.  
  34. echo $result;
  35. ?>


Czy da sie jakos przechwycic co wysyla ich serwer podczas przekierowania?
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.