制作一个远程登录WordPress的功能。站点A -目标WordPress博客-是在不同的服务器上,而不是我用来远程登录的脚本。我使用curl初始请求wp-login.php并设置cookie,然后继续发布表单数据并最终将用户重定向到管理员仪表盘。我见过有人使用wordpress函数来做这个,但我没有权限访问wordpress核心,因为我没有在登录脚本的同一台服务器上访问博客。
下面是我的脚本:
WordPress说浏览器已禁用cookie。
<?php
$username = "username";
$password = "password";
$url = "http://your-domain.com/wp-login.php";
$cookie = "cookie.txt";
$postdata = 'log='. $username .'&pwd='. $password .'&wp-submit=Log%20In&redirect_to='. $url .'wp-admin/&testcookie=1';
//visit the wp-login.php and set the cookie.
$ch = curl_init();
curl_setopt ($ch, CURLOPT_COOKIEJAR, $cookie);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true);
$output = curl_exec ($ch);
// 3. Continue loging into wordpress
$login = curl_init ($url);
curl_setopt($login, CURLOPT_COOKIESESSION, 1);
curl_setopt($login, CURLOPT_COOKIEJAR, $cookie);
curl_setopt($login, CURLOPT_COOKIEFILE, $cookie);
curl_setopt($login, CURLOPT_TIMEOUT, 40);
curl_setopt($login, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($login, CURLOPT_HEADER, 1);
curl_setopt($login, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
curl_setopt ($ch, CURLOPT_TIMEOUT, 60);
curl_setopt($login, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($login, CURLOPT_POST, 1);
curl_setopt($login, CURLOPT_POSTFIELDS, $postdata);
echo curl_exec($login);
curl_close($ch);
// Redirect to the wordpress admin panel
header('location: http://your-domiain.com/wp-admin/');
die();
?>
感谢阅读!
不幸的是,这在cURL中并不是完全直接的。你的问题是cURL不会在你的本地浏览器上设置cookie,它只是在服务器端跟踪它们,它在哪里使用它们。所以当你重定向到Wordpress时,你并没有在你的客户端设置cookie。
如果博客与运行cURL请求的页面位于同一域,则可以解析cURL结果以检索cookie并在浏览器中设置它们。如果它在一个单独的域上,那么你就不走运了,因为浏览器不允许你为另一个域设置cookie。