Home  >  Article  >  Backend Development  >  php uses curl to simulate logging into discuz and simulating posting_PHP tutorial

php uses curl to simulate logging into discuz and simulating posting_PHP tutorial

WBOY
WBOYOriginal
2016-07-20 11:14:44964browse

$discuz_url = 'http://127.0.0.1/discuz/';//Forum address
$login_url = $discuz_url .'logging.php?action=login ';//Login page address


$post_fields = array();
//The following two items do not need to be modified
$post_fields['loginfield'] = 'username';
$post_fields['loginsubmit'] = 'true';
//Username and password must be filled in
$post_fields['username'] = 'tianxin';
$post_fields['password'] = '111111';
// Security question
$post_fields['questionid'] = 0;
$post_fields['answer'] = '';
//@todo verification code
$post_fields['seccoverify'] = ' ';

//Get the form FORMHASH
$ch = curl_init($login_url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$ contents = curl_exec($ch);
curl_close($ch);
preg_match('//i', $contents, $matches);
if(!empty($matches)) {
$formhash = $matches[1];
} else {
die('Not found the forumhash.');
}

//POST data, obtain COOKIE, and put the cookie file in the temp directory of the website
$cookie_file = tempnam('./temp','cookie');

$ch = curl_init($login_url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1) ;
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_fields);
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);
curl_exec($ch);
curl_close($ch);

//After getting the key cookie file, you can use the cookie file to simulate posting, fid is the column ID of the forum
$send_url = $discuz_url."post.php?action=newthread&fid=2";


$ch = curl_init($send_url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_COOKIEFILE , $cookie_file);
$contents = curl_exec($ch);
curl_close($ch);

//The hash code here is different from the hash code in the login window. The hidden here has an additional id attribute
preg_match('//i', $contents, $matches);
if(!empty($matches)) {
$formhash = $matches[1];
} else {
die('Not found the forumhash.');
}


$post_data = array();
//Post title
$post_data['subject'] = 'test2';
//Post content
$post_data['message '] = 'test2';
$post_data['topicsubmit'] = "yes";
$post_data['extra'] = '';
//Post tag
$post_data[' tags'] = 'test';
//The hash code of the post, this is very critical! If this hash code is missing, discuz will warn you that the page you came from is incorrect
$post_data['formhash']=$formhash;


$ch = curl_init($send_url);
curl_setopt($ch, CURLOPT_REFERER, $send_url); //Disguise REFERER
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 0);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
$contents = curl_exec($ch);
curl_close($ch);

//Clean cookie file
unlink($cookie_file);

?>

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/440268.htmlTechArticle?php $discuz_url = 'http://127.0.0.1/discuz/';//Forum address $login_url = $discuz_url .'logging.php?action=login';//Login page address $post_fields = array(); //The following two items do not need to be modified...
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn