作者tomelf (Cheer UP!)
站内PHP
标题Re: [请益] 有关HTTP POST Request的问题
时间Fri Apr 27 00:44:16 2007
※ 引述《tomelf (Cheer UP!)》之铭言:
: 小弟想要写一个功能,能够自动撷取Http Request的回传页面
: 举例来说,任意一个有Query Form的网页(如http://www.yahoo.com/)
: 我要抓出网页中的form,并且自动填入资料,撷取回传页面
: 当form的传送method=get时,我知道怎样直接取得回传页面,
: 但是当form method=post时就会出问题
: (因为回传页面常常不是form action中的那个页面)
: 我有google过相关方法,大部分都只有提到如何利用PHP或javascript去对某个
: 页面做get或post的request,但都没有提到怎样处理以上的问题。
: 想请问各位高手,有没有什麽好方法可以解决这个问题,万分感谢Orz
>回应alpe:
例如
http://lyricsearch.net/这个网页,里面有一个form,
aciton=
http://www.optinpro.com/scripts/subscribe.asp, method=POST
我现在是用PEAR里的html_request来做,对於POST的作法如下:(程式码略微修改过)
$dataKey: POST参数的key值阵列
$data: 存POST参数的阵列
if($form_method=='post'){
for($i=0;$i<count($dataKey);$i++){
$req->addPostData($dataKey[$i],$data[$dataKey[$i]]);
}
if (!PEAR::isError($req->sendRequest())) {
return $req->getResponseBody();
}else{
echo 'HTTP Post error: Cannot using this url!<br>';
}
}
这样会用POST传递参数到网站并且回传action网址内容。
然而上面的回传不是我要的,真正的回传网页会他会自动redirect到
http://search.lyrics.astraweb.com/?word=ricky+martin去
这个才是我真正要的页面
>回应MrMarcus:
CURL中有可以解决这方法的library吗?我会去google看看的,谢谢!
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.115.220.169
※ 编辑: tomelf 来自: 140.115.220.169 (04/27 00:46)
1F:推 alpe:Error @@ 好像要login耶 04/27 00:48
※ 编辑: tomelf 来自: 140.115.220.169 (04/27 00:52)
2F:推 tomelf:不好意思,刚刚在修文,在试一次网址看看吧! 04/27 00:55
3F:推 alpe:search.lyr 是用GET的. 04/27 00:55
5F:→ tomelf:能lyricsearch自己做了一些处理,才用GET redirect到另一个 04/27 00:57
6F:→ alpe:curl 可以 处理 header redirect, 不过js location 就不行 04/27 00:56
7F:→ tomelf:站去 如果程式光看lyricsearch网站看不到redirect的地方 04/27 00:57
8F:→ tomelf:恩恩,我会去找找curl里面hear redirect的方法 04/27 00:59
9F:推 alpe:那页的确用GET传值. 你可以抓package下来看看 04/27 00:59
10F:→ alpe:你看错form了 =_=||| form target="_new" acrion="http://s" 04/27 01:02
11F:→ alpe:POST 那个是 Email Address 的input 04/27 01:03
12F:→ alpe:装个firfox 用 FireBug 去找. 会快狠准 04/27 01:05
13F:推 tomelf:喔喔…了解!谢谢你的解答^^ 04/27 01:11