3

ログインプロセスを経ずに、別のサイトからWP管理者/ダッシュボードに自動的にログインしたい..次のことを試しましたが、うまくいきませんでした:

<?php

$username="admin";
$password="mypasw";
$url="http://example.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;


?>

ダッシュボード ページだけを表示するようなものですが、実際にはログインしていません。なぜなら、管理ページのボタンをクリックしても、サイト ページと同じページにリダイレクトされるだけだからです.. :(

4

2 に答える 2

14

ログインしようとしている Web サイトのファイルにアクセスできる場合。自動ログイン php スクリプトを追加し、このスクリプトにユーザー名とパスワードを $_POST 追加できます。例:

if ($_POST) {

    $errors = array();

    $username = esc_sql($_REQUEST['username']);
    $password = esc_sql($_REQUEST['password']);
    $remember = esc_sql($_REQUEST['rememberme']);
    $remember = ($remember) ? "true" : "false";

    $login_data = array();
    $login_data['user_login'] = $username;
    $login_data['user_password'] = $password;
    $login_data['remember'] = $remember;
    $user_verify = wp_signon($login_data, true);

    if (is_wp_error($user_verify)) {
        $errors[] = 'Invalid username or password. Please try again!';
    } else {
        wp_set_auth_cookie($user_verify->ID);
        wp_redirect(admin_url());
        exit;
    }

}

Wordpress コーデックスの参照:

それが役に立てば幸い。

編集: $wpdb->e​​scape は Wordpress バージョン 3.6 から廃止されました。代わりに wpdb::prepare() または esc_sql() を使用してください! esc_sql() を使用するようにコードを変更しました。

于 2013-05-29T10:15:01.560 に答える