php Curl发布到PHPBB
发布时间:2020-12-13 17:15:14 所属栏目:PHP教程 来源:网络整理
导读:我曾经通过我的帐户通过 PHP脚本发布更新到论坛,最近它已经停止工作,我不是100%确定为什么 – curl没有返回错误,除了显示的消息外,一切似乎都没问题. 我发布的电路板已禁用为我的用户设置的洪水限制,我有权发布所需的任何类型的主题 发布即时消息的代码如下
我曾经通过我的帐户通过
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,CURLOPT_FOLLOWLOCATION,CURLOPT_COOKIEJAR,"cookie.txt"); $result= curl_exec ($ch); curl_close ($ch); $sid1 = explode("sid=",$result); $sid2 = explode('&',$sid1[1]); $sid = rtrim(substr($sid2[0],-29),'"'); $purl = url&"posting.php?mode=post&f=20&sid=$sid"; var_dump($purl); $ch1 = curl_init(); curl_setopt($ch1,$purl); curl_setopt($ch1,1); curl_setopt ($ch1,CURLOPT_HEADER,false ); curl_setopt($ch1,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="(.*)" /&;%',$lastclick); preg_match('%name="creation_time" value="(.*)" /&;%',$ctime1); $lclick = explode('" />',$lastclick[1]); $title = "title"; $subject = "subject to post"; $post_fields = array( 'subject' => $title,'message' => htmlspecialchars_decode($subject),'icon' => 0,'poll_title' => "Poll Name",'poll_option_text' => "poll 1rnpoll 2",'poll_max_options' => 1,'poll_length' => 0,'poll_vote_change' => "on",'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,'post' => 'Submit',); print_r($post_fields); $ch1 = curl_init(); curl_setopt($ch1,$post_fields); curl_setopt($ch1,"cookie.txt"); $result2= curl_exec ($ch1); if(curl_errno($ch1)) { echo 'Curl error: ' . curl_error($ch1); } curl_close ($ch1); echo $result2; 从这个$result2有来自论坛的输出线程,但提交的消息尚未发布. 我在$result2中登录,没有可见的错误消息. 有什么建议 ?香港专业教育学院检查了sid,form_token,lclick和creation_time,它们似乎都是一样的和正确的. curl verbose输出 * 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 解决方法
解决了它
post.php第49行 if ($cancel || ($current_time - $lastclick < 2 && $submit)) 虽然我的用户禁用了泛洪,但我仍然需要坚持2秒的硬编码延迟. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |