Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [cURL] POST nie działa.
Forum PHP.pl > Forum > Przedszkole
carck3r
Witam
Mam kod:
  1. <?php
  2.        //--------------
  3.        $link  = $_POST['link'] = 'http://forum.pclab.pl/index.php';
  4.        $pola  = $_POST['pola'] = 'UserName=login&PassWord=haslo';
  5.        $user_agent= $_POST['user_agent'] = 'Googlebot/2.1 (+http://www.googlebot.com/bot.html)';
  6.        //-------------------
  7.  
  8.        //--------------
  9.        $h = curl_init();
  10.        //-------------------
  11.  
  12.        //--------------
  13.        curl_setopt($h, CURLOPT_URL, $link);
  14.        curl_setopt($h, CURLOPT_RETURNTRANSFER, 1);
  15.        curl_setopt($h, CURLOPT_POST, 1);
  16.        curl_setopt($h, CURLOPT_POSTFIELDS, $pola);
  17.        curl_setopt($h, CURLOPT_USERAGENT, $user_agent);
  18.        //-------------------
  19.  
  20.        $strona = curl_exec($h);
  21.  
  22.        curl_close($h);
  23.  
  24.        echo 'Wynik działania skryptu: '.$strona;
  25.        ?>


Po wejściu na localhost skrypt nie powoduje zalogowania się na to forum. Dlaczego?

Nikt nie wie dlaczego tak się dzieje?

Proszę o pomoc.
djstrong
Mogę napisać co bym dodał:
1. Obsługa cookies
2. Inny link
3. Follow location
3. W ostateczności pełne nagłówki
wookieb
Zapomniałeś dodać obsługi ciasteczek A one są bardzo ważne.
Opcje -> CURLOPT_COOKIEFILE i CURLOPT_COOKIEJAR na http://pl.php.net/curl_set_opt (mozesz tez uzyc szukajki, bylo pare razy na tym forum)

Dodatkowo możesz jeszcze ustawić
CURLOPT_FOLLOWLOCATION na wszelki wypadek jak coś nie będzie działać
carck3r
Napisałem:
  1. <?php
  2. /* -------------------- LOGOWANIE -------------------- */
  3.         $DOCUMENT_ROOT = $_SERVER['DOCUMENT_ROOT'];
  4.       //--------------
  5.       $link = 'http://forum.pclab.pl/index.php?act=Login&CODE=00';
  6.       $pola  = $_POST['pola'] = 'UserName=xxx&PassWord=xxx';
  7.       $parseURL = parse_url($link);
  8.       //-------------------
  9.  
  10.       //--------------
  11.       $h = curl_init();
  12.       //-------------------
  13.  
  14.       //--------------
  15.       curl_setopt($h, CURLOPT_URL, $link);
  16.       curl_setopt($h, CURLOPT_RETURNTRANSFER, 1);
  17.       curl_setopt($h, CURLOPT_POST, 1);
  18.       curl_setopt($h, CURLOPT_POSTFIELDS, $pola);
  19.       curl_setopt($h, CURLOPT_COOKIEJAR, "$DOCUMENT_ROOT/cookie.txt");  
  20.       curl_setopt($h, CURLOPT_COOKIEFILE, "$DOCUMENT_ROOT/cookie.txt");
  21.       curl_setopt($h, CURLOPT_FOLLOWLOCATION, 1);
  22.       //-------------------
  23.  
  24.       $strona = curl_exec($h);
  25.  
  26.       curl_close($h);
  27.  
  28.       echo 'Wynik działania skryptu: '.$strona;
  29. ?>

Ale i tak nie działa. Dlaczego?
W pliku cookie.txt zapisuje się:
Kod
# Netscape HTTP Cookie File
# http://curlm.haxx.se/rfc/cookie_spec.html
# This file was generated by libcurl! Edit at your own risk.

.pclab.pl    TRUE    /    FALSE    0    ibf_session_id    936089c0a37c6edcb784c05c4edcb271

Ale i tak się nie loguje...
erix
  1. <?php
  2. $parseURL[host].cookie
  3. ?>

Co to jest...? To ma być ścieżka do pliku...
carck3r
Mam ścieżkę do pliku, ciastka się zapisuje do cookie.txt, ale i tak się nie loguje...
Może mi ktoś to wytłumaczyć jakoś łopatologicznie?
djstrong
Wg mnie to może być tylko nadal zły link, brak referera lub brak pełnych nagłówków.
carck3r
Tym razem nasza-klasa. Do cookie.txt normalnie zapisuje.
  1. <?php
  2. /* -------------------- LOGOWANIE -------------------- */
  3.        $DOCUMENT_ROOT = $_SERVER['DOCUMENT_ROOT'];
  4.        $przegladarka='Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.8.1.12) Gecko/2008020121 Firefox/2.0.0.12';
  5.         $naglowki=array('Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5',
  6. 'Accept-Language: pl,en-us;q=0.7,en;q=0.3',
  7. 'Accept-Charset: ISO-8859-2,utf-8;q=0.7,*;q=0.7');
  8.      //--------------
  9.      $link = 'http://nasza-klasa.pl/login/';
  10.      $pola  = $_POST['pola'] = 'login=Nxxxnia&password=xxxx';
  11.      //-------------------
  12.  
  13.      //--------------
  14.      $h = curl_init();
  15.      //-------------------
  16.  
  17.      //--------------
  18.      curl_setopt($h, CURLOPT_URL, $link);
  19.      curl_setopt($h, CURLOPT_POST, 1);
  20.      curl_setopt($h, CURLOPT_POSTFIELDS, $pola);
  21.      curl_setopt($h, CURLOPT_COOKIEFILE, "$DOCUMENT_ROOT/cookie.txt");
  22.      curl_setopt($h, CURLOPT_COOKIEJAR, "$DOCUMENT_ROOT/cookie.txt");  
  23.      curl_setopt($h, CURLOPT_FOLLOWLOCATION, 1);
  24.      curl_setopt($h, CURLOPT_USERAGENT, $przegladarka);
  25.        curl_setopt($h, CURLOPT_ENCODING, '');
  26.        curl_setopt($h, CURLOPT_HTTPHEADER, $naglowki);
  27.      //-------------------
  28.  
  29.        curl_exec($h);
  30.  
  31.      curl_close($h);
  32.      
  33.      if(strstr($h, 'Przekierowanie'))
  34. echo 'zalogowano poprawnie, zapis danych do pliku';
  35. else
  36. echo 'złe haslo!';
  37. ?>


Już tyle kombinuję, a i tak nic z tego. Czy ktoś może mi dać gotowy, działający kod, który sobie przeanalizuję?

Czy ktoś może pomóc?
erix
Cytat
Tym razem nasza-klasa.

Już było takich kilku, co sobie chcieli napisać spambota. Myślisz, że serwisy nie są zabezpieczone przed takimi, jak Ty?
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.