我目前正试图设置一些允许我远程登录到wordpress的东西,我不确定我是否正确或者是否可能,但它似乎来自我读过的一些事情。< / p>
我正在使用以下代码:
// 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。
我不知道这是什么或为什么这样做
答案 0 :(得分:0)
我认为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');
希望它有所帮助。
答案 1 :(得分:0)
我无法使用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>
这会自动向Wordpress提交一个登录请求,没有任何问题,并在“授予正确的详细信息提交”中记录用户,简单有效,并且可以使用VueJS等框架轻松扩展。
答案 2 :(得分:0)
就像wordpress一样,它返回一个cookie,该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');