Иногда нам нужно использовать один и тот же сеанс входа пользователя во всех поддоменах веб-сайта, таких как www.example.com для blog.example.com или shop.example.com.
Для этого мы можем использовать Атрибут домена файла cookie, который является пятым параметром в функции setcookie в PHP.
$domain = '.example.com'; setcookie($cookieName, $cookieValue, time() + 3600, ‘/’, $domain);
а для JavaScript нам нужно определить функцию для установки файла cookie, который включает атрибут домена.
function setCookie(a, b, c) { var domain = 'example.com'; var d = new Date(); d.setTime(d.getTime() + c * 60 * 60 * 1000); var e = 'expires=' + d.toGMTString(); var f = 'domain=' + domain + ';path=/'; document.cookie = a + '=' + b + '; ' + e + ';' + f; }
Когда пользователь входит в основной домен, мы должны хранить токен входа в файлы cookie с использованием любого метода шифрования.
if($login == true){
$loginToken = md5(time());
// TODO :: Store this token into Databse
// Store this token into Cookie
$domain = '.example.com';
setcookie('_loginToken', $loginToken, time() + 3600, ‘/’, $domain); /* expire in 1 hour */
}
Теперь нам нужно получить cookie с помощью суперглобальной переменной $_COOKIE[‘_loginToken’] в PHP.
$loginToken = $_COOKIE['_loginToken'];
получить данные из базы данных и установить сеанс для пользователя.
if(isset($_COOKIE['_loginToken']) && $_COOKIE['_loginToken']!=''){ $loginToken = $_COOKIE['_loginToken']; // TODO :: get User from database by using login token // TODO :: Set session of user }
Используя эти шаги, один и тот же логин можно использовать в разных доменах.