Wordpress自动登录在PHP中使用CURL或fsockopen [英] Wordpress autologin using CURL or fsockopen in PHP
本文介绍了Wordpress自动登录在PHP中使用CURL或fsockopen的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
客户希望点击链接并自动登录到Wordpress后端管理部分。
我尝试使用fsockopen,代码如下。没有工作。
$ post_data ['user_login'] ='admin';
$ post_data ['user_pass'] ='password';
$ post_data ['wp-submit'] ='登录';
$ post_data ['redirect_to'] ='http://example.com/wp-admin/';
//遍历数组并准备发布数据(key1 = value1)
foreach($ post_data as $ key => $ value){
$ post_items [] = $键。 '='。 $ value;
}
//使用implode()创建最后一个字符串
$ post_string = implode('&',$ post_items);
//我们还需要在字符串
$ post_string ='?'的开头添加一个问号。 $ post_string;
$ data_length = strlen($ post_string);
$ connection = fsockopen('www.example.com',80);
fputs($ connection,POST /wp-login.php HTTP / 1.1\r\\\
);
fputs($ connection,Host:www.example.com \r\\\
);
fputs($ connection,Content-Type:application / x-www-form-urlencoded\r\\\
);
fputs($ connection,Content-Length:$ data_length\r\\\
);
fputs($ connection,Connection:close\r\\\
\r\\\
);
fputs($ connection,$ post_string);
fclose($ connection);
也尝试过CURL
$ ch = curl_init('http://example.com/wp-login.php');
$ post_data ['user_login'] ='admin';
$ post_data ['user_pass'] ='password';
$ post_data ['wp-submit'] ='登录';
$ post_data ['redirect_to'] ='http://example.com/wp-admin/';
// $ post_data ['testcookie'] ='0';
// $ post_data ['rememberme'] ='forever';
foreach($ post_data as $ key => $ value){
$ post_items [] = $ key。 '='。 $ value;
}
//使用implode()创建最后一个字符串
$ post_string = implode('&',$ post_items);
curl_setopt($ ch,CURLOPT_POST,1);
curl_setopt($ ch,CURLOPT_POSTFIELDS,$ post_string);
curl_exec($ ch);
curl_close($ ch);任何人都有如何使这项工作的想法?
$ b $ b 它是一个linux操作系统。运行php5。
我这样做之前javascript只是提交一个窗体,所有隐藏的输入页面加载。客户不想要javascript
解决方案这适用于我:
$ username =admin;
$ password =admin;
$ url =http://www.yourdomain.com/;
$ cookie =cookie.txt;
$ postdata =log =。 $ username。& pwd =。 $ password。& wp-submit = Log%20In& redirect_to =。 $ url。wp-admin /& testcookie = 1;
$ ch = curl_init();
curl_setopt($ ch,CURLOPT_URL,$ url。wp-login.php);
curl_setopt($ ch,CURLOPT_SSL_VERIFYPEER,FALSE);
curl_setopt($ ch,CURLOPT_USERAGENT,Mozilla / 5.0(Windows; U; Windows NT 5.1; en-US; rv:1.8.1.6)Gecko / 20070725 Firefox / 2.0.0.6
curl_setopt($ ch,CURLOPT_TIMEOUT,60);
curl_setopt($ ch,CURLOPT_FOLLOWLOCATION,1);
curl_setopt($ ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ ch,CURLOPT_COOKIEJAR,$ cookie);
curl_setopt($ ch,CURLOPT_REFERER,$ url。wp-admin /);
curl_setopt($ ch,CURLOPT_POSTFIELDS,$ postdata);
curl_setopt($ ch,CURLOPT_POST,1);
$ result = curl_exec($ ch);
curl_close($ ch);
echo $ result;
exit;
Client wants to click a link and auto login to Wordpress backend admin section.
I tried using fsockopen, code below. Didn't work.
$post_data['user_login'] = 'admin';
$post_data['user_pass'] = 'password';
$post_data['wp-submit'] = 'Log In';
$post_data['redirect_to'] = 'http://example.com/wp-admin/';
//traverse array and prepare data for posting (key1=value1)
foreach ( $post_data as $key => $value) {
$post_items[] = $key . '=' . $value;
}
//create the final string to be posted using implode()
$post_string = implode ('&', $post_items);
//we also need to add a question mark at the beginning of the string
$post_string = '?' . $post_string;
$data_length = strlen($post_string);
$connection = fsockopen('www.example.com', 80);
fputs($connection, "POST /wp-login.php HTTP/1.1\r\n");
fputs($connection, "Host: www.example.com \r\n");
fputs($connection, "Content-Type: application/x-www-form-urlencoded\r\n");
fputs($connection, "Content-Length: $data_length\r\n");
fputs($connection, "Connection: close\r\n\r\n");
fputs($connection, $post_string);
fclose($connection);
also tried CURL
$ch = curl_init('http://example.com/wp-login.php');
$post_data['user_login'] = 'admin';
$post_data['user_pass'] = 'password';
$post_data['wp-submit'] = 'Log In';
$post_data['redirect_to'] = 'http://example.com/wp-admin/';
//$post_data['testcookie'] = '0';
//$post_data['rememberme'] = 'forever';
foreach ( $post_data as $key => $value) {
$post_items[] = $key . '=' . $value;
}
//create the final string to be posted using implode()
$post_string = implode ('&', $post_items);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_string);
curl_exec ($ch);
curl_close ($ch);
Anyone have an Idea of how to make this work?
Its a linux OS. Running php5.
I have done this before with javascript just submitting a form with all hidden inputs on page load. Client does not want javascript
解决方案 This worked for me:
$username="admin";
$password="admin";
$url="http://www.yourdomain.com/";
$cookie="cookie.txt";
$postdata = "log=". $username ."&pwd=". $password ."&wp-submit=Log%20In&redirect_to=". $url ."wp-admin/&testcookie=1";
$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, $url . "wp-login.php");
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt ($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6");
curl_setopt ($ch, CURLOPT_TIMEOUT, 60);
curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_COOKIEJAR, $cookie);
curl_setopt ($ch, CURLOPT_REFERER, $url . "wp-admin/");
curl_setopt ($ch, CURLOPT_POSTFIELDS, $postdata);
curl_setopt ($ch, CURLOPT_POST, 1);
$result = curl_exec ($ch);
curl_close($ch);
echo $result;
exit;
这篇关于Wordpress自动登录在PHP中使用CURL或fsockopen的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文