Wordpress自动登录在PHP中使用CURL或fsockopen [英] Wordpress autologin using CURL or fsockopen in PHP

查看:165
本文介绍了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆