我曾经通过我的帐户通过PHP脚本将更新发布到论坛上,最近它已停止工作,而且我不是100%知道为什么-curl没有返回错误,除了出现消息外,一切似乎还可以。
即时贴要发布的董事会已为我的用户设置了洪水泛滥限制,并且我有权发布所需的主题类型
以下是要发布即时消息使用的代码(前不久在网上找到-较小的修改)
$ 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 =“标题”; $ subject =“可以发布”; $ post_fields =数组( '主题'=> $ title, 'message'=> htmlspecialchars_decode($ subject), 'icon'=> 0, 'poll_title'=>“投票名称”, 'poll_option_text'=>“投票1 \ r \ npoll 2”, 'poll_max_options'=> 1, 'poll_length'=> 0, 'poll_vote_change'=>“开”, 'disable_smilies'=> 0, 'attach_sig'=> 1, 'notify'=> 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)) { 回显“卷曲错误:”。curl_error($ ch1); } curl_close($ ch1); echo $ result2;
从这里$result2
有论坛的输出主题,但是提交的消息尚未发布。
我在$ result2中成功登录,没有可见的错误消息。
有什么建议么 ?我检查了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
Run Code Online (Sandbox Code Playgroud)
解决了
posting.php第49行
if ($cancel || ($current_time - $lastclick < 2 && $submit))
Run Code Online (Sandbox Code Playgroud)
尽管没有为我的用户启用泛洪功能,但我仍然必须坚持2秒的硬编码延迟。
归档时间: |
|
查看次数: |
2348 次 |
最近记录: |