簡體   English   中英

如何通過PHP CURL從一個站點自動登錄到另一個站點

[英]How to auto login from one site into another via PHP CURL

站點A和站點B都在Wordpress中並且在同一服務器上。 單擊按鈕時,PHP CURL請求源自站點A。 用戶已經登錄站點A。

現在,單擊按鈕時,它將自動將同一用戶登錄到站點B。 我正在努力實現這一目標。

1)據我了解,如果站點A中的用戶不存在於站點B中,則他們將無法登錄。 如果我錯了,請糾正我。 但是,如果可以登錄到站點B而不必在站點B數據庫中創建用戶,那就更好了。 現在,我首先在站點B中創建用戶

2)當前,在站點B中,我能夠從站點A傳遞用戶ID,並在服務器站點上的站點B中登錄用戶。 wp_get_current_user()的服務器站點是wp_get_current_user()從站點B返回正確的用戶is_user_logged_in()返回true。 但是,當我重定向到站點B URL時,該用戶未登錄。

3)在Google上進行了無數次搜索后,我了解到該用戶登錄服務器端,但未登錄瀏覽器,這與Cookie或會話有關? 請告訴我如何解決這個問題。 我不清楚如何在此處處理會話或cookie以自動登錄。

從站點A,單擊按鈕。

$url = 'http://siteB.com/loginUserMethod';
$cookie = 'cookie.txt';
$opts = array(
    CURLOPT_CONNECTTIMEOUT => 10,
    CURLOPT_RETURNTRANSFER => false,
    CURLOPT_TIMEOUT => 60,
    CURLOPT_USERAGENT => 'from-site-A',
    CURLOPT_SSL_VERIFYPEER => False,
    CURLOPT_HTTPHEADER => array('Accept: application/json'),
    CURLOPT_COOKIEFILE => $cookie,
    CURLOPT_COOKIEJAR=> $cookie,
    CURLOPT_POST => 1,
    // CURLOPT_HEADER => false,
    CURLOPT_FOLLOWLOCATION => true,
    CURLOPT_POSTFIELDS => http_build_query($user),
    CURLOPT_URL => $url
);

$ch = curl_init();
curl_setopt_array($ch, $opts);
curl_exec($ch);
curl_close();

//now the user should have logged in site B
wp_redirect('http://siteB.com');
exit;

站點B,處理卷曲請求

public function loginUserMethod()
{
    $userDataFromSiteA = $_POST;
    $userObjectfromSiteB = get_user_by('login', $userDataFromSiteA['data']['user_login']);
    $a = wp_set_current_user($userObjectfromSiteB->data->ID);
    var_dump(is_user_logged_in($userObjectfromSiteB->data->ID));//returns true
    exit;
}

首先使用密碼和用戶ID來創建另一個URL,然后將該URL傳遞到file_get_contents(url)中。 無需卷曲請求,它將回復您。

在其他站點上,您必須檢查function.php文件中的憑據,然后驗證您的身份並拋出任何響應。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM