如何通过PHP CURL从一个站点自动登录到另一个站点

时间:2017-10-28 06:46:31

标签: php wordpress curl cookies

网站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;
}

1 个答案:

答案 0 :(得分:-1)

首先使用密码和用户ID制作url(另一个),然后将该url传递给file_get_contents(url)。没有需要卷曲请求它会回复给你。

在您必须检查function.php文件中的凭据的其他网站上,然后验证并抛出任何响应。