Php 您可以使用curl向wordpress发送登录post请求吗?
我目前正在尝试设置一种远程登录wordpress的方式,我不确定我是否能做到这一点,或者这是可能的,但这似乎是我读过的一些东西 我使用下面的代码:Php 您可以使用curl向wordpress发送登录post请求吗?,php,wordpress,curl,Php,Wordpress,Curl,我目前正在尝试设置一种远程登录wordpress的方式,我不确定我是否能做到这一点,或者这是可能的,但这似乎是我读过的一些东西 我使用下面的代码: // Get cURL resource $curl = curl_init(); // Set some options - we are passing in a useragent too here curl_setopt_array($curl, array( CURLOPT_RETURNTRANSFER => 1, C
// Get cURL resource
$curl = curl_init();
// Set some options - we are passing in a useragent too here
curl_setopt_array($curl, array(
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_URL => 'http://example.com/wp-login.php',
CURLOPT_USERAGENT => 'Codular Sample cURL Request',
CURLOPT_POST => 1,
CURLOPT_POSTFIELDS => array(
'log' => 'username',
'pwd' => 'password',
'wp-submit' => 'Log In',
'redirect_to' => 'http://example.com/wp-admin/',
'testcookie' => 1
)
));
// Send the request & save response to $resp
$resp = curl_exec($curl);
die(var_dump($resp));
// Close request to clear up some resources
curl_close($curl);
当我死了,var_dump它时,页面只返回这个,别的什么也不返回:string(0)“
仅此而已
但是,当我从curl请求中删除“pwd”字段时,它会返回登录页面,并显示一条错误消息,说明密码字段中的密码丢失
编辑
成功登录时出现新错误:
错误:浏览器阻止或不支持cookie。你必须
启用Cookie以使用WordPress
我不知道这是什么,也不知道它为什么这么做,我认为WordPress不允许你这么做,因为它缺少安全提示或参考页面 我的建议是安装/开发一个支持远程登录的插件,然后根据插件结构将登录请求发送到您的网站 您可以使用以下功能进行自动登录
function auto_login( $username ) {
// log in automatically
if ( !is_user_logged_in() ) {
$user = get_userdatabylogin( $username );
$user_id = $user->ID;
wp_set_current_user( $user_id, $user_login );
wp_set_auth_cookie( $user_id );
do_action( 'wp_login', $user_login );
}
}
那么,您需要的是如下所示:
auto_login('admin');
希望能有所帮助。我认为WordPress不允许您这样做,因为缺少安全提示或推荐页面 我的建议是安装/开发一个支持远程登录的插件,然后根据插件结构将登录请求发送到您的网站 您可以使用以下功能进行自动登录
function auto_login( $username ) {
// log in automatically
if ( !is_user_logged_in() ) {
$user = get_userdatabylogin( $username );
$user_id = $user->ID;
wp_set_current_user( $user_id, $user_login );
wp_set_auth_cookie( $user_id );
do_action( 'wp_login', $user_login );
}
}
那么,您需要的是如下所示:
auto_login('admin');
希望有帮助。我无法使用cURL登录,但我可以使用下面的代码以更简单的方式进行操作
<html>
<head>
<title>Crunchify Login Page</title>
<script>
function loginForm() {
document.myform.submit();
document.myform.action = "http://www.example.com/wp-login.php";
}
</script>
</head>
<body onload="loginForm()">
<form action="http://www.example.com/wp-login.php" name="myform" method="post">
<input type="text" name="log" value="admin">
<input type="password" name="pwd" value="password">
<input type="submit" value="Login">
</form>
</body>
</html>
Crunchify登录页面
函数loginForm(){
document.myform.submit();
document.myform.action=”http://www.example.com/wp-login.php";
}
这将自动向Wordpress提交登录请求,没有任何问题,并将用户登录到“已提交正确的详细信息”,简单有效,使用VueJS等框架也易于扩展。我无法使用cURL登录,但我可以使用下面的代码以更简单的方式进行操作
<html>
<head>
<title>Crunchify Login Page</title>
<script>
function loginForm() {
document.myform.submit();
document.myform.action = "http://www.example.com/wp-login.php";
}
</script>
</head>
<body onload="loginForm()">
<form action="http://www.example.com/wp-login.php" name="myform" method="post">
<input type="text" name="log" value="admin">
<input type="password" name="pwd" value="password">
<input type="submit" value="Login">
</form>
</body>
</html>
Crunchify登录页面
函数loginForm(){
document.myform.submit();
document.myform.action=”http://www.example.com/wp-login.php";
}
这会自动向Wordpress提交登录请求,不会出现任何问题,并将用户记录在“已提交正确的详细信息”中,简单有效,并且使用VueJS等框架可以轻松扩展。看起来Wordpress会返回一个cookie,它希望在标题中发布,否则您会收到此错误。为了避免这种情况,我骗它以为我提前拿到了饼干:
$headers = array(
"Cookie: wordpress_test_cookie=WP+Cookie+check"
);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
您还需要确保打开了cookie选项
curl_setopt($curl, CURLOPT_COOKIESESSION, 1);
curl_setopt($curl, CURLOPT_COOKIEJAR, '/path/to/cookie.txt');
curl_setopt($curl, CURLOPT_COOKIEFILE, '/path/to/cookie.txt');
看起来wordpress返回了一个cookie,它希望在标题中发布该cookie,否则会出现此错误。为了避免这种情况,我骗它以为我提前拿到了饼干:
$headers = array(
"Cookie: wordpress_test_cookie=WP+Cookie+check"
);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
您还需要确保打开了cookie选项
curl_setopt($curl, CURLOPT_COOKIESESSION, 1);
curl_setopt($curl, CURLOPT_COOKIEJAR, '/path/to/cookie.txt');
curl_setopt($curl, CURLOPT_COOKIEFILE, '/path/to/cookie.txt');
为什么不使用WordPress ReST API而不是CURL?@libregeek,因为它不支持登录,或者我弄错了?我不确定您的用例是什么,但是如果您试图从WordPress站点获取内容,那么ReST API更好。@libregeek我不想获取内容,我试图通过站点登录WordPress。使用预先填充的凭据登录->重定向到管理页面,以便用户可以使用。基本上,我们有一大堆wordpress网站,将它们全部列出,然后点击一次登录到管理面板会更容易。Rest API将是实现这一点的正确方法,如果这还不够的话,我建议用自己的API方法制作一个插件。还有InfiniteWP(可能还有很多其他选择),我过去免费使用它来管理多个wordpress站点。为什么不使用wordpress ReST API而不是CURL?@libregeek,因为它不支持登录,还是我弄错了?我不确定您的用例是什么,但是如果您试图从wordpress站点获取内容,那么RESTAPI就更好了。@libregeek我不想获取内容,我想通过网站登录wordpress。使用预先填充的凭据登录->重定向到管理页面,以便用户可以使用。基本上,我们有一大堆wordpress网站,将它们全部列出,然后点击一次登录到管理面板会更容易。Rest API将是实现这一点的正确方法,如果这还不够的话,我建议用自己的API方法制作一个插件。此外,还有InfiniteWP(可能还有许多其他选择),我过去免费使用它来管理多个wordpress站点