Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Curl i przesyłanie danych po przez POST
Forum PHP.pl > Forum > PHP
pitu
Witam

Mam problem z pobraniem danych ze strony, do której się łącze przesyłając dodatkowe parametry po przez POST.

Moja funkcja
  1. function returnPage($url){
  2. $curl = curl_init($url);
  3. $agent="Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.5) Gecko/2008120122 Firefox/3.0.5";
  4. //curl_setopt($curl, CURLOPT_HTTPHEADER, array('Accept-Encoding: gzip,deflate'));
  5. curl_setopt($curl,CURLOPT_COOKIEFILE,"cookie.txt");
  6. curl_setopt($curl,CURLOPT_COOKIEJAR,"cookie.txt");
  7. curl_setopt($curl,CURLOPT_USERAGENT,$agent);
  8. curl_setopt($curl, CURLOPT_POST, 1);
  9. curl_setopt($curl, CURLOPT_POSTFIELDS, '_method=POST&data%5BTowar%5D%5Bfraza%5D=test&data%5BTowar%5D%5Btyp%5D=&szukaj=szukaj');
  10. curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
  11. $page = curl_exec($curl);
  12. return $page;
  13. }


Bez przesyłania parametów funkcja zwraca źródło, niestety z paramterami nie zwraca nic.

cookie.txt
Kod
.domena.pl    TRUE    /    FALSE    0    CAKEPHP    c091f6d3cc1890568be2b705732a9a06


Nagłówki przy wyszukiwaniu na stronie (wybrane tylko dotyczące przesyłania paramterów)
Kod
[url="http://www.domena.pl/towar/szukaj"]http://www.domena.pl/towar/szukaj[/url]

POST /towar/szukaj HTTP/1.1
Host: www.domena.pl
User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:14.0) Gecko/20100101 Firefox/14.0.1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: pl,en-us;q=0.7,en;q=0.3
Accept-Encoding: gzip, deflate
Connection: keep-alive
Referer: [url="http://www.domena.pl/"]http://www.domena.pl/[/url]
Cookie: __utma=128495507.1672291741.1340891638.1345701533.1345710681.171; __utmz=128495507.1343041358.81.7.utmcsr=google|utmccn=(organic)|utmcmd=organic|u
tmctr=(not%20provided); WRUID=235857712.1191000463; mf_user=1; partner[potwierdzenia]=piotr; CakeCookie[ogladane]=0%7C20048%2C1%7C12333%2C2%7C19014%2C3%7C18224%2C4%7C18291%2C5%7C18398%2C6%7C18402%2C7%7C19097%2C8%7C18957%2C9%7C19175; CAKEPHP=f71ba5d5cd7e60208b29fe25e7fe0c9f; __utmc=128495507; __utmb=128495507.3.10.1345710681
Content-Type: application/x-www-form-urlencoded
Content-Length: 84
_method=POST&data%5BTowar%5D%5Bfraza%5D=test&data%5BTowar%5D%5Btyp%5D=&szukaj=szukaj
HTTP/1.1 302 Found
Date: Thu, 23 Aug 2012 08:53:18 GMT
Server: Apache
P3P: CP="NOI ADM DEV PSAi COM NAV OUR OTRo STP IND DEM"
Location: [url="http://www.domena.pl/towar/szukaj"]http://www.domena.pl/towar/szukaj[/url]
Content-Encoding: gzip
Vary: Accept-Encoding
Content-Length: 26
Keep-Alive: timeout=15, max=97
Connection: Keep-Alive
Content-Type: text/html
----------------------------------------------------------
mrWodoo
  1. '_method=POST&data[Towar][fraza]=test&data[Towar][typ]=&szukaj=szukaj


no i czy wysyłasz cURLA na skrypt, który przetwarza formularz?
pitu
Próbowałem również w takiej formie przekazywać paramtery lecz ten sam problem.

Co do wysyłania na url to oczywiście leci na
http://www.domena.pl/towar/szukaj
mrWodoo
umm, to jest szukanie domeny? bo chcę sprawdzić jak dokładnie ten formularz wygląda (firebugiem).
w międzyczasie upewnij się, że referent jest ok u Ciebie bo może być takie zabezp.

a curl zwraca jakąś stronę z apache'owskim błędem ?
pitu
To jest wyszukiwanie produktów w sklepie. Domenę wysyłam na PW.
mrWodoo
z tego co mi tu Firebug pokazuje, to najpierw jest post na formularz szukania, ofc. przesyłane są wszystkie coookie, a zaraz po tym idzie kolejne żądanie POSTem na szukajke, więc po wykonaniu POSTa wyśwtiel stronę GETem albo odblokuj w CURLu aby pokazywało Ci nagłówki odp. CULROPT_HEADERS, 1 czy jakoś tak. tam powinno być przekierowanie Location: ...


//tak, po żądaniu poprawnym przez POST w nagłówku odp. jest
Location http://www.xxxx.pl/towar/szukaj


Polecam zaopatrzyć się w Firebuga następnym razem
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.