Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: wiki, curl, ciastka i skomplikowane logowanie
Forum PHP.pl > Forum > PHP
phoenix84
cześć

problem jest taki:

napisałem sobie dość spory program w php do nauki języków... no i cały czas dopisuje do niego nowe fukcje... najnowsza to opcja automatycznego wyszukiwania tłumaczeń na wiktionary.org i uzupełniania własnej bazy danych słowami stamtąd...

już samo dostanie się do wiktionary nie było łatwe... wywalało mi cały czas access denied... ale pogrzebałem i znalazłem obejście za pomocą curl... (to dla tych, co by się zastanawiali do czego służy początek skryptu)... i to już właściwie działa... kolejny problem polega na tym... że teraz chciałbym dokonywać automatycznego uploadu słów dodanych przeze do programu na wikisłownik... to już też właściwie jest... ale... chciałbym robić te upgrady na swoim wikisłownikowym koncie... i teraz pytanie jak?questionmark.gif jak się zalogować ze skryptu?questionmark.gif bo kiedy odpalam wiktionary w przegladarce to juz jestem automatycznie zalogowany...ale jak to zrobic z poziomiu skryptu (bo ze skryptu zalogowany nie jestem tongue.gif)... no bo jesli napisze zwykly formularz z domyslnymi wartosciami jako np. type=hidden... to i tak musze wcisnac submit... malo tego, wynik otrzymam w nastepnym oknie ze stroną udanego zalogowania z wiktionary, a chce by mi znowu wczytal strone już "zalogowaną" do pliku...

najlepiej jakby dalo rade zrobic wszystko w jednym kodzie... bez wciskania zadnych submitow etc... no chyba ze wystarczy jakos tak zrobic, ze jednokrotne wcisniecie submit spowoduje, ze bede zalogowany przez jakis (dluzszy) czas... (w wiki jest opcja "zapamietaj moje haslo", ktora pozwala byc zalogowanym przez miesiac)

tutaj kawalek kodu:
  1. <?php
  2. $slowo=urlencode($_POST["slowo"]);
  3.  
  4. $curl=curl_init("http://pl.wiktionary.org/wiki/$slowo");
  5. curl_setopt($curl, CURLOPT_HEADER, 0);
  6. curl_setopt($curl, CURLOPT_NOBODY, 0);
  7. curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
  8. curl_exec($curl);
  9. curl_close($curl);
  10.  
  11. $plik=file("http://pl.wiktionary.org/wiki/$slowo");
  12. for($i0=0;$i0<count($plik);$i0++)
  13.  {
  14.  echo $plik[$i0];
  15.  }
  16. ?>


z gory dzieki za pomoc

Phoenix84
ave
musisz wyslac odpowiednie naglowki zaleznie czy logowanie jest przez posta czy geta
http://pl.php.net/manual/pl/function.curl-setopt.php#76219 m.in. tutaj jest przyklad
a potem odebrac te dane i wyciagnac z nich id sesji, cookies jesli takowe strona zwraca i dolaczac je do naglowka kolejnych zapytan..
phoenix84
dzieki za naprowadzenie... jak wyslac geta to wiem (w linku?)... ale jak posta? bo jesli przez formularz, to jak przejac zawartosc strony, ktora zostanie zwrocona? bo nie chce zeby mi ja wysiwetlil, a wrzucil do pamieci... link, ktory dales mi nie dziala smile.gif...

pozdrawiam

Phoenix
drPayton
Link działa i w nim jest wszystko co Ci jest potrzebne (konkretny przykład)
phoenix84
Teraz pytania za 100 punktow... smile.gif

1. czemu kiedy uzyje tego kodu, to textarea jest puste, a jak wchodze przegladarka to jest pelne... smile.gif

  1. <?php
  2. $curl = curl_init();
  3. curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
  4. curl_setopt($curl, CURLOPT_HEADER, 0);
  5. curl_setopt($curl, CURLOPT_POST, true);
  6. curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
  7. curl_setopt($curl, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)");
  8. curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
  9. curl_setopt($curl, CURLOPT_COOKIEFILE, "cookiefile");
  10. curl_setopt($curl, CURLOPT_COOKIEJAR, "cookiefile"); # SAME cookiefile
  11. curl_setopt($curl, CURLOPT_URL, "http://pl.wiktionary.org/w/index.php?title=yes&action=edit"); # this is where you are requesting POST-method form results (working with secure connection using cookies after auth)
  12. $xxx = curl_exec($curl);
  13.  
  14. curl_close ($curl);
  15. echo $xxx;
  16. ?>


2. skad wiki, wie ze nie jestem przegladarka a skryptem i wywala tu blad niby blad serwerow, zamiast mnie po prostu zalogowac... w przegladarce zero problemu...

  1. <?php
  2. $curl = curl_init();
  3. curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
  4. curl_setopt($curl, CURLOPT_HEADER, 0);
  5. curl_setopt($curl, CURLOPT_POST, true);
  6. curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
  7. curl_setopt($curl, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)");
  8. curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
  9. curl_setopt($curl, CURLOPT_COOKIEFILE, "cookiefile");
  10. curl_setopt($curl, CURLOPT_COOKIEJAR, "cookiefile"); # SAME cookiefile
  11. curl_setopt($curl, CURLOPT_URL, "http://pl.wiktionary.org/w/index.php?title=Specjalna:Zaloguj&action=submitlogin&type=login"); # this is where you are requesting POST-method form results (working with secure connection using cookies after auth)
  12. curl_setopt($curl, CURLOPT_POSTFIELDS, "wpName=mojlogin&wpPassword=mojehaslo&wpRemember=1"); # form params that'll be used to get form results
  13. $xxx = curl_exec($curl);
  14.  
  15. curl_close ($curl);
  16. echo $xxx;
  17. ?>
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.