我有两个虚拟主机:
Ex. testproject1.net and
testproject2.net
我在那里创建了两个简单的登录脚本。我想为它实现 SSO 实现。一旦用户使用 testproject1.net 进行身份验证,我想为两个虚拟主机(testproject1.net 和 testproject2.net)设置会话。意味着如果我打开 testproject2.net,它会通过获取会话值自动进行身份验证。
请帮助处理这个问题。
提前致谢
我有两个虚拟主机:
Ex. testproject1.net and
testproject2.net
我在那里创建了两个简单的登录脚本。我想为它实现 SSO 实现。一旦用户使用 testproject1.net 进行身份验证,我想为两个虚拟主机(testproject1.net 和 testproject2.net)设置会话。意味着如果我打开 testproject2.net,它会通过获取会话值自动进行身份验证。
请帮助处理这个问题。
提前致谢
好的,就到这里。如果你愿意,可以再买一个Virtual Host
。authproject.net
并将身份验证信息发布到那里的表单中。让它在会话中设置。
现在,一旦您将凭据提供给authproject.net
域以及身份验证后的去向,它将身份验证数据发布到相应的目的地。
testproject1.net/index.php
:<?php
if (isset($_SESSION["user"]))
die($_SESSION["user"]["name"] . " is logged in!");
else
die('<a href="auth.php">Login</a>');
?>
testproject1.net/auth.php
:<?php
if (isset($_SESSION["user"]) && !count($_POST))
{
header("Location: index.php");
die();
}
elseif (count($_POST))
if ($_POST["username"] == "admin" && $_POST["password"] == "letmein")
$_SESSION["user"]["title"] = "Administrator"; # The session is set
else
showForm(); # Invalid Password
else
showForm(); # Log In Screen
?>
<?php
session_start();
if (isset($_SESSION["user"]) && !count($_POST))
{
header("Location: index.php");
die();
}
elseif (count($_POST))
if ($_POST["username"] == "admin" && $_POST["password"] == "letmein")
{
$_SESSION["user"]["title"] = "Administrator"; # The session is set
if (isset($_GET["redirect"]))
{
# Start crappy implementation :P
echo '<form method="post" action="', $_GET["redirect"], '/auth.php" id="authfrm"><input type="hidden" name="username" value="', $username, '"><input type="hidden" name="password" value="', $password, '"></form><script type="text/javascript">document.getElementById("authfrm").submit();</script>';
}
else
header("Location: index.php");
}
else
showForm(); # Invalid Password
else
showForm(); # Log In Screen
?>