Здравствуйте Может быть можно
Я могу предложение, вы можете использовать временный магазин таблицы, таблицы вошли идентификатор пользователя и текущее время дата &, а также IP-адрес, и сохранить этот один в к совместному использованию файлов cookie через несколько доменов/отправить скрытый сохраненный идентификатор, чтобы ваш множественный site.based на ид и ф и время вы можете реализовать логику
примечание: выход из системы и тайм-аут сеанса раз вы можете удалить запись табличной формы
я написала небольшой пример плз проверить его один раз . это мое будет полезно вам
Сессия, скорее всего, не сработает. Я думал об использовании JSON, но мне не удалось выяснить, как сделать Javascript динамичным, поскольку я всегда предпочитаю использовать jQuery (если у вас есть идея, не стесняйтесь делиться ими). В конце концов, я решил использовать PHP вместе с MySQL и cURL.
Мы первые начнем с создания таблицы для обработки входа в сеанс:
CREATE TABLE IF NOT EXISTS `sso_login` (`user_id` int(11) NOT NULL)
Цель таблицы для хранения зарегистрированных пользователей и удалить то при выписке.
Далее это PHP скрипт, который будет вставлять новый идентификатор пользователя при подписании в (название файла: register.php):
<?php
/**
*
* @
*/
$userId = $_GET['id'];
$sql = sprintf("INSERT INTO sso_login VALUES ('%s')", $userId);
mysql_query($sql);
?>
Просто, не так ли? Все, что он делает, это вставить идентификатор пользователя в таблицу.
Далее это файл, который удалить идентификатор пользователя, когда пользователь подписывает вне (имя файла: drop.php):
<?php
/**
*
*
*/
$userId = $_GET['id'];
$sql = sprintf("DELETE FROM sso_login WHERE user_id = '%s'", $userId);
mysql_query($sql);
?>
I believe the script is pretty much self-explainatory.
Next is the file which checks whether user is already logged in or vice versa (file name: check.php):
<?php
/**
*
*
*/
$userId = $_GET['userId'];
$sql = sprintf("SELECT COUNT(*) FROM sso_login WHERE user_id = '%s'", $userId);
$query = mysql_query($sql);
if (mysql_result($query, 0, 0) > 0)
{
echo 'User '.$userId.' has logged in';
}
else
{
echo 'User '.$userId.' is not logged in.';
}
?>
Этот скрипт будет проверять, имеется ли в таблице идентификатор пользователя передается или не. Если это не означает, что пользователь не вошёл в систему.
Эти три скрипта будут храниться на сервере другой стороны. Далее следуют сценарии, которые будут храниться на сервере BC, где выполняется процесс входа и выхода. Все эти процессы используют cURL.
первых, это скрипт, который будет обновлять другой сайт, когда пользователь вошел в систему (имя файла: login.php):
<
?php
/**
*
*
*/
if($_POST)
{
$username = $_POST['username'];
$password = $_POST['password'];
if (($username == "bcoffee") && ($password == "demo"))
{
$userId = 10;
$target_site = sprintf("http://the-other-site.com/register.php?id=%s", $userId);
$timeout = 5;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $target_site);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
curl_exec($ch);
curl_close($ch);
header('location: index.php');
}
}
?>
Вы могли бы заметить, что имя пользователя и пароль тверды закодировано, это предназначалось для целей POC, поэтому это не имеет значения. Вернемся к учебнику.
Как вы можете видеть, он достигнет register.php с идентификатором пользователя. Обратитесь к содержимому регистра.php, который затем вставляет идентификатор пользователя в таблицу. Таким образом, другой сервер будет знать, что пользователь уже вошел в
Далее это скрипт, который сообщит другой сервер, когда пользователь подписывает вне. (Имя файла: logout.php):
<?php
/**
*
*
*/
$userId = 10;
$target_site = sprintf("http://the-other-site.com/drop.php?id=%s", $userId);
$timeout = 5;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $target_site);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
curl_exec($ch);
curl_close($ch);
header('location: login.html');
?>
Аналогично login.php, но на этот раз он удалит идентификатор пользователя, когда пользователь выйдет из системы. Следовательно, когда система проверяет (используя check.php) и обнаруживает, что идентификатор пользователя недоступен, он будет знать, что пользователь в настоящее время не зарегистрирован.