Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Czy istnieje cos takiego? Jak moge to wykonać?
Forum PHP.pl > Forum > Gotowe rozwiązania
adiscan
Witam,
Czy jest mozliwe napisanie takiego skryptu który bedzie dzałał następująco:\

wejdzie na stronke, zaloguje się zaznaczy pole wyboru i zaakceptuje wybór tzn wysle. Chodzi mi o to by tą akcje powtarzał na co godzine...
Cięzkie bedzie to do zrobienia?
nospor
2 minuty roboty winksmiley.jpg
http://pl.php.net/manual/pl/book.curl.php
adiscan
... bede bardzo wygodny i może troche to bedzie nie na miejscu ale czy moglbyc mi napisac cos takiego na szybko do modyfikacji? musze to zrobić na potrzeby własne bardzo szybko i jesli miałbym sie tego dopiero uczyc to napewno zajeloby mi to co najmniej 2 dni....
bede bardzo wdzieczny....

Jesli nie to sorry za tego posta!
mike
Podać numer konta czy płacisz do ręki?


P.S.
Mogę przenieść na Giełdę ofert jeśli chcesz.
adiscan
Cytat(mike @ 21.11.2008, 10:40:56 ) *
P.S.
Mogę przenieść na Giełdę ofert jeśli chcesz.


Chodzimi o przysługe lub o znalezienie czegos gotowego do zmodyfikowania...
Jelis nic z tego to przepraszam, nie było tematu.

Można usunąć temat
adiscan
zrobiłem cos taiego:
  1. <?php
  2. $c = curl_init();
  3. curl_setopt($c, CURLOPT_URL, 'http://www.metale.pl/support/index.php?w=p');
  4. curl_setopt($c, CURLOPT_POST, 1);
  5. curl_setopt($c, CURLOPT_POSTFIELDS, 'email=xxx&haslo=xxx');
  6. curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
  7. $page = curl_exec($c);
  8. curl_close($c);
  9. ?>


i ten kod powinien mnie zalogowac na ta stronke automatycznie a wyswietla stronke bez formatowania.

Jak to ugryźć dalej?

musze sie zalogowac, przejsc do odpowiedniej zakładki, zaznaczyć odpowiednie pole i potwierdzić wybór...
vokiel
Jak się zalogujesz to dostaniesz w odpowiedzi pobraną tą całą stronę. Zatem musisz drugi raz użyc curl, zeby przejść pod kolejny adres (Twojej zakładki), pobrać tą stronę, wybrać sobie Twojego checkboxa i znów użyć curl.
Postępuj z cURL tak jakby był użytkownikiem, i klikał po tych linkach.
adiscan
vokiel dzieki za porade, ale nawet jak wydaje mi sie ze to jest logiczne i ma jakis sens to i tak nie działa sad.gif

mam np cos takiego:

w serwisie www.metale.pl trzeba sie zalogować aby przejsc do niektoych funkcji w sumie nmormalka.
Więc wystarczy wpisac adres stronki, poprosi o podanie loginu i hasła i ma być

wiec podaje za pomocą curl adresik: http://www.metale.pl/support/index.php?w=p
i za pomocą posta przesyłam Login w postaci emaila oraz hasło

w źródle stronki za wysłanie formularza odpowiada taki wpis:

  1. <form action="index.php" method="POST">
  2. <input type="hidden" name="w" value="p">
  3.  
  4. <table width="630" cellspacing="0" cellpadding="15">
  5. <tr><td width="40%">
  6.  
  7.  
  8. <FIELDSET id="tablica" >
  9. <span><b>Logowanie</b></span>
  10. <table border="0" cellspacing="0" cellpadding="0" bordercolor="#cccccc">
  11. <tr><td class="tekst9">
  12. <b>E-mail</b><br>
  13. <input type="text" name="email" size="35" value=""><br>
  14. <b>Hasło</b><br>
  15. <input type="password" name="haslo" size="35"><br><br>
  16. <input type="submit" value="Wchodzę" tabindex="3">
  17. </td></tr>
  18. </table>
  19.  




  1. <?php
  2. $curl = curl_init();
  3. curl_setopt($curl, CURLOPT_URL, "http://www.metale.pl/support/ramki.php?w=p&"); // to jest adres do ktorego chce zeby mnie przenioslo po zalogowaniu
  4. ?>






Wiec po zastosowaniu CURL by przesłac Postem bedzie to miało postac:

Kod
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, "email=xxxxxx@wp.pl&haslo=zzzzzz");



nie wiem czy zmienna typu hidden tez ma być przesłana?questionmark.gif
i jaką ma wartość?

  1. <input type="hidden" name="w" value="p">
czy ją też mam przesłać postem?


no i koncowka CURL'a u mnie ma postac:

  1. <?php
  2. curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
  3. curl_exec($curl);
  4. curl_close($curl);
  5. ?>




a całość

  1. <?php
  2. $curl = curl_init();
  3. curl_setopt($curl, CURLOPT_URL, "http://www.metale.pl/support/ramki.php?w=p&");
  4. curl_setopt($curl, CURLOPT_POST, 1);
  5. curl_setopt($curl, CURLOPT_POSTFIELDS, "email=xxxxxxx@wp.pl&haslo=zzzzzzz");
  6. curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
  7. curl_exec($curl);
  8. curl_close($curl);
  9. ?>




No i powiedzcie mi z łaski swojej co tu jest źłeeeeeeeeee?questionmark.gif
vokiel
Adres: http://www.metale.pl/support/index.php
zmienne:
w=p
email=email
haslo=hasło

  1. <?php
  2. function curl_it($method, $target, $post_var){
  3.    $ch = curl_init();
  4.    curl_setopt($ch, CURLOPT_URL, $target);
  5.    curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
  6.    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
  7.    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  8.    curl_setopt($ch, CURLOPT_COOKIEJAR, '/path/to/cookie.txt');
  9.    curl_setopt($ch, CURLOPT_COOKIEFILE, '/path/to/cookie.txt');
  10.  
  11.    if ($method == 'POST') {
  12.        curl_setopt($ch, CURLOPT_POST, 1);
  13.        curl_setopt($ch, CURLOPT_POSTFIELDS, $post_var);
  14.    }
  15.  
  16.    $result = curl_exec($ch);
  17.    curl_close($ch);
  18. }
  19.  
  20. // użycie:
  21. // otwarcie strony
  22. curl_it('', 'http://www.metale.pl/support/index.php');
  23. // wyslanie formularza
  24. curl_it('POST', 'http://www.metale.pl/support/index.php', 'w=p&email=email&haslo=hasło');
  25. // otwarcie strony
  26. curl_it('', 'http://www.metale.pl/support/ramki.php?w=p');
  27. ?>
adiscan
Vokiel dzieki za ten skrypcik ale niestety nie działa! Pokazuje sie czysta strona. Uzupełniłem zmienne:
w=p
email=moj mejl
haslo=moje haslo

no i niestety!
vokiel
Piszesz, że nie działa, ale nie piszesz co nie działa. Co ja wróżka jestem?? Może nie masz włączonego cURL, może masz safe_mode albo en_basedir....
Poza tym, jak widzisz funkcja nic nie zwracała, moje przeoczenie, nic nie wyświetlała, bo nie było żadnego echo.
Testuj ten:
  1. <?php
  2. function curl_it($method, $target, $post_var=false){
  3.   $ch = curl_init();
  4.   curl_setopt($ch, CURLOPT_URL, $target);
  5.   curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
  6.   //curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
  7.   curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  8.   curl_setopt($ch, CURLOPT_COOKIEJAR, '/cookie/cookie.txt');
  9.   curl_setopt($ch, CURLOPT_COOKIEFILE, '/cookie/cookie.txt');
  10.  
  11.   if ($method == 'POST') {
  12.       curl_setopt($ch, CURLOPT_POST, 1);
  13.       curl_setopt($ch, CURLOPT_POSTFIELDS, $post_var);
  14.   }
  15.  
  16.   $result = curl_exec($ch);
  17.   curl_close($ch);
  18.   return $result;
  19. }
  20.  
  21. // użycie:
  22. // otwarcie strony
  23. echo curl_it('', 'http://www.metale.pl/support/index.php');
  24. // wyslanie formularza
  25. echo curl_it('POST', 'http://www.metale.pl/support/index.php', 'w=p&email=email&haslo=hasło');
  26. // otwarcie strony
  27. echo curl_it('', 'http://www.metale.pl/support/ramki.php?w=p');
  28. ?>
adiscan
Teraz wyswietla:


Warning: Unknown: Your script possibly relies on a session side-effect which existed until PHP 4.2.3. Please be advised that the session extension does not consider global variables as a source of data, unless register_globals is enabled. You can disable this functionality and this warning by setting session.bug_compat_42 or session.bug_compat_warn to off, respectively. in Unknown on line 0



i dalej nie może zalogować, a ja nie wiem co oznacza ten błąd. sad.gif
vokiel
Utwórz plik php.ini a w nim:
Kod
session.bug_compat_42 = 1
session.bug_compat_warn = 0


A tak w ogóle to pewnie masz php < 4.2.3, czyli by się przydał upgrade do php 5
adiscan
Cytat(vokiel @ 28.11.2008, 13:45:52 ) *
A tak w ogóle to pewnie masz php < 4.2.3, czyli by się przydał upgrade do php 5



wersja PHP Version 5.2.4-0+tld0

i dalej nie działa !

... dzieki za pomoc! szkoda ze nie działa ale już chyba nie ma co ciągnąć tematu w nieskończoność...


DZIEKI ,
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-2024 Invision Power Services, Inc.