标签:
一句话,就是能让各个不同的域名带回相同的认证信息即可。
实现方法,就是把其中一个登陆后,把认证的信息分别保存在不同域名下的 cookie,
当在验证是否登陆时,验证 cookie,如果是子域名,这个则直接用 cookie设置作用域为顶级即可。
以下说的是不同的域名,其中是用了 script 的功能,分别去访问各个页面,如域名:
www.a.com
www.b.com
www.c.com
各个域名下放一个 index.php文件,作为验证用,
index.php测试代码如下:
<?php print_r($_COOKIE); //这里解析 cookie中的信息,如果验证通过,则生成 cookie写到相应的域名下 ?>
假设统一的登陆的页面是
www.c.com/login.php,www.c.com/do.php先作前端验证,如果正确,则允许提交
login.php 代码如下
<?php session_start(); ?> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"/> <title>sync login</title> <script src="jquery-1.8.3.min.js" type="text/javascript"></script> </head> <body> <form action="http://www.c.com/do.php" method="post"> <input type="text" name="username" placeholder="用户名"/> <input type="text" name="password" placeholder="密码"/> <input type="submit" value="登录"/> </form> <script> $(document).ready(function(){ $("input[name=‘username‘]").click(function(){ var username = $("input[name=‘username‘]").val(); var password = $("input[name=‘password‘]").val(); var url ="do.php"; $.post(url,{code:name},function(data){ if(data.error==false) { return true; }else { alert(data.message); return false; } },‘json‘); }); }); </script> </body> </html>
do.php代码如下:
<?php $redirect = empty($_REQUEST[‘redirect‘]) ? ‘http://www.a.com‘ : $_REQUEST[‘redirect‘]; if(empty($_REQUEST[‘username‘]) || empty($_REQUEST[‘password‘])){ header(‘Loaction:http://‘.urldecode($redirect)); exit; } $urls = array( ‘www.a.com/a.php‘, ‘www.b.com/a.php‘, ‘www.c.com/a.php‘ ); ?> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"/> <?php foreach($urls as $url){?> <script type="text/javascript" src="http://<?php echo $url.‘?code=‘.$_REQUEST[‘code‘] ?>"></script> <?php } ?> <title>登陆验证</title> </head> <body> <script type="text/javascript"> window.onload=function(){ location.replace(‘<?php echo $redirect; ?>‘); } </script> </body> </html>
这样,直接访问 www.a.com/www.b.com/www.c.com就可以获取到 cookie信息了
以上是基本的原理,在各个页面作下验证判断就可以直接用了,一般域名少的,
足够使用,一般也不会太多的域名
标签:
原文地址:http://www.cnblogs.com/lin3615/p/5399073.html