发布卷曲无法正常工作

时间:2013-05-25 09:26:38

标签: php curl

我正在使用curl来完成三项任务。也就是说,登录到我的测试站点,转到我们输入文本的表单并获取隐藏的随机session_id,设置第三个curl请求以发布带有session_id的消息。 但是这里只能执行前两个请求。该消息未发布。

的index.php     

$ch = curl_init();

$url = 'http://webforum.com';

include 'a.php';

$url = 'http://webforum.com/add_message.php';

include 'C.php';

preg_match_all('|name="session_id" value="(.*?)"|',$store,$tks);

$token = $tks[1][0];

$postf = 'session_id='.$token.'&add=mga&text=TAPPOUT&submit=Submit';

include 'c.php';


?>

c.php     

$cookie_file_path="cookies.txt";

$agent="Nokia-Communicator-WWW-Browser/2.0 (Geos 3.0 Nokia-9000i)";

$headers[]="Accept: */*";

$headers[]="Connection: Keep-Alive";

curl_setopt($ch,CURLOPT_HTTPHEADER, $headers);

curl_setopt($ch,CURLOPT_HEADER,0);
curl_setopt($ch,CURLOPT_URL,$url);

curl_setopt($ch,CURLOPT_COOKIEFILE,$cookie_file_path);

curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,0);

curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false);

curl_setopt($ch,CURLOPT_USERAGENT,$agent);

curl_setopt($ch,CURLOPT_POST,1);

curl_setopt($ch,CURLOPT_POSTFIELDS,$postf);

 curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);

curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1);

 curl_setopt($ch,CURLOPT_COOKIEJAR,$cookie_file_path);

$store = curl_exec($ch);

?>

有人能解决问题吗?

1 个答案:

答案 0 :(得分:2)

为什么要使用这种笨拙且不可靠的方法来模拟浏览器?怎么会有验证码,或者某些JS,或者其他什么障碍?

您必须使用适用于当前任务的工具,而不是其他任何工具。

您可以使用SOAP,RPC,XML,直接访问数据库,POLL而不是PUSH以及许多其他方法,每种方法都比这种愚蠢的模拟更有用。当然,它需要在服务器端进行一些编程,但这不会成为问题。