我有drupal登录模块,每当用户从wordpress站点登录时都会触发它会被触发并登录到该站点但是当用户从drupal注销时它不会从wordpress注销。请检查下面的代码并指导我解决这个问题
function wp_login_user_logout( $account) {
if (isset($_SERVER['HTTP_COOKIE'])) {
$cookies = explode(';', $_SERVER['HTTP_COOKIE']);
foreach($cookies as $cookie) {
$parts = explode('=', $cookie);
$name = trim($parts[0]);
setcookie($name, '', time()-1000);
setcookie($name, '', time()-1000, '/','sitedomain.com');
}
}
}
您不能从一个域修改另一个域的 cookie。
所以我建议你创建一些这样的api。
关于 WordPress 安装...
<?php
// file: wp/api/logout.php
require_once("../wp-load.php");
if(empty($_GET["email"])) {
die('no email given');
}
// get wordpress user_id by email
$email = $_GET["email"];
$user = get_user_by( 'email', $email );
$user_id = $user->ID;
// get all sessions for user with ID $user_id
$sessions = WP_Session_Tokens::get_instance($user_id);
// we have got the sessions, destroy them all!
$sessions->destroy_all();
print("user logged out.");
现在,如果您像这样访问 wordpress 的 url(确保对电子邮件 ID 进行 url 编码):https : //example.com/api/logout.php? email = email% 40gmail.com
它将使用电子邮件 ID 注销用户:[email protected]
现在你可以从你的 Drupal 向这个 url 发出 curl 请求。
当然这不是很安全(如果他们有电子邮件 ID,可以注销任何用户)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句