8

以前は自分のアカウントでPHPスクリプトを使用してフォーラムに更新を投稿していましたが、最近は機能しなくなりました。理由は100%わかりません。curlからエラーが返されることはなくメッセージが表示される以外はすべて問題ないようです。

ボードに投稿すると、ユーザーにフラッド制限が無効になり、必要なトピックの種類を投稿する権限があります。

imを使用して投稿するコードは次のとおりです(少し前にオンラインで見つかりました-マイナーな編集)

$ url = "http://url.co.uk/board/";

$ post_fields ='username = user&password = pass&redirect =&login = Log + in';
$ lurl =$url。"ucp.php";
$ ch = curl_init();
curl_setopt($ ch、CURLOPT_URL、$ lurl);
curl_setopt($ ch、CURLOPT_POST、1);
curl_setopt($ ch、CURLOPT_POSTFIELDS、$ post_fields);
curl_setopt($ ch、CURLOPT_RETURNTRANSFER、1);
curl_setopt($ ch、CURLOPT_FOLLOWLOCATION、1);
curl_setopt($ ch、CURLOPT_COOKIEJAR、 "cookie.txt");
$ result = curl_exec($ ch);
curl_close($ ch);
$ sid1 = explode( "sid ="、$ result);
$ sid2 = explode('&'、$ sid1 [1]);
$ sid = rtrim(substr($ sid2 [0]、0、-29)、'"');

$ purl = url& "posting.php?mode = post&f = 20&sid = $ sid";
var_dump($ purl);
$ ch1 = curl_init();
curl_setopt($ ch1、CURLOPT_URL、$ purl);
curl_setopt($ ch1、CURLOPT_RETURNTRANSFER、1);
curl_setopt($ ch1、CURLOPT_HEADER、false);
curl_setopt($ ch1、CURLOPT_FOLLOWLOCATION、1);
curl_setopt($ ch1、CURLOPT_COOKIEFILE、 "cookie.txt");
$ result1 = curl_exec($ ch1);
curl_close($ ch1);

preg_match('%name = "form_token" value = "(。*)" \ /\>%'、$ result1、$ security123);
preg_match('%name = "lastclick" value = "(。*)" \ /\>%'、$ result1、$ lastclick);
preg_match('%name = "creation_time" value = "(。*)" \ /\>%'、$ result1、$ ctime1);
$ lclick = explode('"/>'、$ lastclick [1]);

$ title = "title";
$ subject="投稿する件名";
$ post_fields = array(
            '件名'=>$ title、
         'メッセージ'=>htmlspecialchars_decode($ subject)、
            'アイコン'=>0、
'poll_title' => "投票名"、
'poll_option_text' => "poll 1 \ r \ npoll 2"、
'poll_max_options' => 1、
'poll_length' => 0、
'poll_vote_change' => "on"、


            'disable_smilies' => 0、
            'attach_sig' => 1、
            '通知'=>0、
         'topic_type' => 2、
            'topic_time_limit' => ""、
           'creation_time' => $ ctime1 [1]、
         'lastclick' => $ lclick [0]、
          'form_token' => $ security123 [1]、
              'sid' => $ sid、
         '投稿'=>'送信'、

         );
print_r($ post_fields);
$ ch1 = curl_init();
curl_setopt($ ch1、CURLOPT_URL、$ purl);
curl_setopt($ ch1、CURLOPT_POST、1);
curl_setopt($ ch1、CURLOPT_POSTFIELDS、$ post_fields);
curl_setopt($ ch1、CURLOPT_RETURNTRANSFER、1);
curl_setopt($ ch1、CURLOPT_HEADER、false);
curl_setopt($ ch1、CURLOPT_FOLLOWLOCATION、1);
curl_setopt($ ch1、CURLOPT_COOKIEFILE、 "cookie.txt");
$ result2 = curl_exec($ ch1);
if(curl_errno($ ch1))
{{
    echo'カールエラー:'。curl_error($ ch1);
}
curl_close($ ch1);
エコー$result2;

これから$result2フォーラムからの出力スレッドがありますが、送信されたメッセージは投稿されていません。

$ result2にログインしましたが、エラーメッセージは表示されません。

助言がありますか ?iveはsid、form_token、lclick、creation_timeをチェックしましたが、これらはすべて同じで正しいようです。

カール冗長出力

* About to connect() to site.co.uk port 80
*   Trying 78.xxx.yyy.zzz... * connected
* Connected to site.co.uk (78.xxx.yyy.zzz) port 80
> POST /board/posting.php?mode=post&f=20 HTTP/1.1

Host: site.co.uk

Accept: */*

Cookie: phpbb3_9g61k_sid=693813912f38db33091212ee14102026; phpbb3_9g61k_k=; phpbb3_9g61k_u=57

Content-Length: 1914

Expect: 100-continue

Content-Type: multipart/form-data; boundary=----------------------------2fb596b13df0



< HTTP/1.1 100 Continue

< HTTP/1.1 302 Found

< Date: Wed, 30 Jan 2013 23:21:39 GMT

< Server: Apache/2.2.22 (CentOS)

< Location: http://site.co.uk/board/viewforum.php?f=20

< Content-Length: 0

< Content-Type: text/html; charset=UTF-8

* Connection #0 to host site.co.uk left intact
* Issue another request to this URL: 'http://site.co.uk/board/viewforum.php?f=20'
* Disables POST, goes with GET
* Re-using existing connection! (#0) with host site.co.uk
* Connected to site.co.uk (78.xxx.yyy.zzz) port 80
> GET /board/viewforum.php?f=20 HTTP/1.1

Host: site.co.uk

Accept: */*

Cookie: phpbb3_9g61k_sid=693813912f38db33091212ee14102026; phpbb3_9g61k_k=; phpbb3_9g61k_u=57



< HTTP/1.1 200 OK

< Date: Wed, 30 Jan 2013 23:21:39 GMT

< Server: Apache/2.2.22 (CentOS)

< Cache-Control: private, no-cache="set-cookie"

< Expires: 0

< Pragma: no-cache

< Transfer-Encoding: chunked

< Content-Type: text/html; charset=UTF-8

* Connection #0 to host site.co.uk left intact
* Closing connection #0
4

1 に答える 1

7

解決しました

post.php49行目

if ($cancel || ($current_time - $lastclick < 2 && $submit))

ユーザーのフラッドは無効になっていますが、ハードコードされた2秒の遅延があります。

于 2013-01-31T08:06:10.580 に答える