[英]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.