0

curl を使用して 3 つのタスクを実行しています。つまり、私のテスト サイトにログインし、テキストを入力して非表示の random を取得するフォームに移動しsession_id、受信した session_id を使用してメッセージを投稿するように 3 番目の curl 要求を設定します。ただし、ここでは最初の 2 つの要求しか実行できません。メッセージが投稿されていません。

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);

?>

誰でも問題を理解できますか?

4

1 に答える 1

2

ブラウザをエミュレートするような厄介で信頼できない方法を使用するのはなぜですか? キャプチャ、JS、またはその他の障害がある場合はどうなりますか?

他の目的ではなく、現在のタスクを目的としたツールを使用する必要があります。

SOAP、RPC、XML、データベースへの直接アクセス、PUSH の代わりに POLL、その他多くの方法を使用できます。これらの方法はどれも、このばかげたエミュレーションよりもはるかに便利です。もちろん、サーバー側でプログラミングが必要になりますが、それは問題にはなりません。

于 2013-05-25T09:31:19.623 に答える