PHP卷曲张贴到PHPBB
我曾经通过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 = "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, 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: ' . 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
解决了它
posted.php第49行
if ($cancel || ($current_time - $lastclick < 2 && $submit))
尽管我的用户禁用了洪水,但仍然需要坚持2秒的硬编码延迟。
链接地址: http://www.djcxy.com/p/48543.html