【发布时间】:2011-05-04 17:59:21
【问题描述】:
我有一个主域:main.com,子域:test1.main.com、test2.main.com 和其他域one.com、two.com。
现在是这样完成的:
ini_set("session.cookie_domain", ".main.com");
$domain = 'main.com';
登录.php
$user = $db->query("SELECT id, login FROM users WHERE email=? AND password=?",
array($email, $password), "rowassoc");
if($user)
{
$_SESSION['user_id'] = $user['id'];
$_SESSION['user_name'] = $user['login'];
$time = 100000;
setcookie('email', $email, time() + $time, "/", "." . $domain);
setcookie('password', $password, time() + $time, "/", "." . $domain);
header('Location: http://' . $user['login'] . "." . $domain);
exit;
}
在每个页面上添加:
if(!isset($_SESSION['user_id']))
{
if(isset($_COOKIE['email']) && isset($_COOKIE['password']))
{
$email = $_COOKIE['email'];
$password = $_COOKIE['password'];
$user = $db->query("SELECT id, login FROM users WHERE email=? AND password=?",
array($email, $password), "rowassoc");
if($user)
{
$_SESSION['user_id'] = $user['id'];
$_SESSION['user_name'] = $user['login'];
}
}
}
else
{
$user = $db->query("SELECT id, login FROM users WHERE id=?",
array($_SESSION['user_id']), "rowassoc");
if(!$user)
{
setcookie('email', '', time() , "/", "." . $domain);
setcookie('password', '', time() , "/", "." . $domain);
unset($_SESSION['user_id']);
session_destroy();
setcookie("PHPSESSID","",time(), "/", "." . $domain);
}
else
{
$_SESSION['user_id'] = $user['id'];
$_SESSION['user_name'] = $user['login'];
}
}
注销.php
if(isset($_SESSION['user_id']))
{
setcookie('email', '', time() , "/", "." . $domain);
setcookie('password', '', time() , "/", "." . $domain);
unset($_SESSION['user_id']);
unset($_SESSION['user_name']);
session_destroy();
setcookie("PHPSESSID","",time(), "/", "." . $domain);
header('Location: /main');
exit;
}
但它仅适用于域 main.com 及其子域 test1.main.com、test2.main.com。
我需要以某种方式保存会话以及其他域one.com、two.com。
如何最好地进行安全认证,如果有解决方案,我真的很困惑,请举例说明。
【问题讨论】:
-
我们需要方式更多关于您想要完成的任务的详细信息。身份验证与不同的域有什么关系?请编辑您的问题以添加更多细节。
-
哇!永远不要将密码存储在 cookie 或数据库表中。密码应由 PHPass 库散列存储。
-
我已经在另一个地方更正了这个问题
-
此处提出的 Ajax/JS 和 iframe 解决方案:stackoverflow.com/q/4813498/1066234 也可在此处查看此示例:github.com/0k/multidomain-sso
标签: php session authentication cookies session-cookies