使用Curl远程登录WordPress


Log into WordPress remotely using Curl

制作一个远程登录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。