网站A和网站B都在Wordpress和同一台服务器上。单击按钮时,PHP CURL请求来自站点A.用户已登录站点A。
现在,当点击该按钮时,它应该自动将同一用户登录到站点B.我正在努力实现这一目标。
1)据我了解,如果站点A中的用户不在站点B中,则无法登录。如果我错了,请纠正我。但如果可以登录到站点B而不必在站点B数据库中创建用户,那将会好得多。至于现在,我首先在站点B中创建用户
2)目前,在站点B中,我能够从站点A获取传入的用户ID,并在服务器站点的站点B中登录用户。我的意思是服务器站点是,wp_get_current_user()
从站点B返回正确的用户。is_user_logged_in()
返回true。但是当我重定向到站点B url时,用户没有登录。
3)经过无数次谷歌搜索,我明白了,用户登录服务器端而不是浏览器,因为它与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;
}
答案 0 :(得分:-1)
首先使用密码和用户ID制作url(另一个),然后将该url传递给file_get_contents(url)。没有需要卷曲请求它会回复给你。
在您必须检查function.php文件中的凭据的其他网站上,然后验证并抛出任何响应。