单点登录(手写php代码)

来源:互联网 发布:淘宝c店铺运营计划表 编辑:程序博客网 时间:2024/05/29 21:28

//假设有三个网站,分别是网站web1(验证登录)网站shop以及网站getinfo

//第一步:网站shop里面引入jquery再新建一个login.php文件.

<?phpsession_start();//开启sessionheader('content-type:text/html;charset=utf8');//设置字符集if(isset($_SESSION['login'])){//判断登录    echo "登录状态";    echo "<a href='exitlogin.php'>退出</a>";    ?>    <script src="jquery-1.7.2.min.js"></script>    <script>        $.ajax({//实现ajax跨域到网站getinfo中的ui.php            url:"http://localhost/xiaoshixun2/rikao/getinfo/ui.php?callback=testlogin",            dataType:'jsonp',            jsonpCallback:'testlogin',            success:function(txt){            }        });    </script>    <?php}else{    ?>    <input type="text" name="username"/>    <input type="text" name="pwd"/>    <input type="submit" value="登录" onclick="login()"/>    <script src="jquery-1.7.2.min.js"></script>    <script>       function login(){//实现ajax登录验证          var u=$("input[name=username]").val();           var p=$("input[name=pwd]").val();           $.ajax({               url:"http://localhost/xiaoshixun2/rikao/web1/ucserver.php?username="+u+"&pwd="+p+"&callback=testlogin",               dataType:'jsonp',               jsonpCallback:'testlogin',               success:function(txt){                   if(txt.error==0){                      location.href="ui.php?u="+txt.data.u+"&login="+txt.data.login;                   }                   else{                      alert(txt.msg);                   }               }           });       }    </script><?php}?>//新建ui.php
<?phpsession_start();$_SESSION['login']=true;$rs['error']=0;if(isset($_GET['callback'])){//判断是否callback    exit($_GET['callback']."(".json_encode($rs).")");}else{    header('location:login.php');}//新建exitlogin.php
<?phpsession_start();//开启sessionsession_destroy();//消除sessionheader('location:login.php');
//新建curl.php
<?php$ch=curl_init();curl_setopt($ch,CURLOPT_URL,'http://localhost/xiaoshixun2/rikao/getinfo/ui.php');curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);curl_exec($ch);curl_close($ch);
//第二步:在web1里新建ucserver.php
<?php$n=$_GET['username'];//接收用户名$p=$_GET['pwd'];//接收密码//伪代码,此处用户名密码应该和数据库里匹配,此处用户名abc 密码 123是自定义的if($n=="abc"&& $p=="123"){  $rs['error']=0;    $rs['data']=array('u'=>$n,'login'=>true);    exit($_GET['callback']."(".json_encode($rs).")");}else{    $rs['error']=1;    $rs['msg']='你的用户或密码不正确';    exit($_GET['callback']."(".json_encode($rs).")");}?>
//第三步:操作getinfo网站
//新建login.php
<?phpsession_start();//print_r($_SESSION);header('content-type:text/html;charset=utf8');if(isset($_SESSION['login_getinfo'])){    echo "登录状态";    echo "<a href='exitlogin.php'>退出</a>";    ?>    <script src="jquery-1.7.2.min.js"></script>    <script>        $.ajax({            url:"http://localhost/xiaoshixun2/rikao/shop/ui.php?callback=testlogin",            dataType:'jsonp',            jsonpCallback:'testlogin',            success:function(txt){            }        });    </script><?php}else{    ?>    <input type="text" name="username"/>    <input type="text" name="pwd"/>    <input type="submit" value="登录" onclick="login()"/>    <script src="jquery-1.7.2.min.js"></script>    <script>        function login(){            var u=$("input[name=username]").val();            var p=$("input[name=pwd]").val();            $.ajax({                url:"http://localhost/xiaoshixun2/rikao/web1/ucserver.php?username="+u+"&pwd="+p+"&callback=testlogin",                dataType:'jsonp',                jsonpCallback:'testlogin',                success:function(txt){                    if(txt.error==0){                        location.href="ui.php?u="+txt.data.u+"&login="+txt.data.login;                    }                    else{                        alert(txt.msg);                    }                }            });        }    </script><?php}?>
//新建ui.php
<?phpsession_start();$_SESSION['login_getinfo']=true;$rs['error']=0;if(isset($_GET['callback'])){exit($_GET['callback']."(".json_encode($rs).")");}else{    header('location:login.php');}
//新建exitlogin.php
<?phpsession_start();session_destroy();header('location:login.php');
//新建curl.php
<?php$ch=curl_init();curl_setopt($ch,CURLOPT_URL,'http://localhost/xiaoshixun2/rikao/shop/ui.php');curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);curl_exec($ch);curl_close($ch);


0 0
原创粉丝点击