1. <em id="mcngm"><acronym id="mcngm"></acronym></em>
      1. <tbody id="mcngm"></tbody>
        <rp id="mcngm"></rp>
        1. 網絡編程教程

          asp寫的一個openid登錄技巧方法

          時間:2012-8-14 17:42:29  瀏覽:
          這個對付簡單的登錄還是沒問題的,不過代碼還沒測試。

          先放上來,有興趣的可以看看


           <script language="JScript" runat="server">
          /*
          ASP Openid
          by fisker
          2008-9-3
          */
          var alert=PRint=write=function(str){Response.Write(str);}
          var openid = new fiskerOpenid();
          var input=getInput();
          if(input["openid.mode"]=="id_res"){
            var nickname = input["openid.sreg.nickname"];
            var email = input["openid.sreg.email"];
            var returnUrl=input["return"];
            returnUrl += returnUrl.indexOf("?")!=-1?"&":"?";
            returnUrl += "nickname="+nickname;
            returnUrl += "&email="+email;

            Response.Redirect(returnUrl);
          }else{
            if(input["openid"]==""||input["return"]==""){
              Response.write("<sc"+"ript>");
              Response.write("alert("error");");
              Response.write("window.history.forward(1);");
              Response.write("</sc"+"ript>");
              Response.end();
            }
           
            openid.url = input["openid"];
            openid.get();
          }

          function getInput(){
              var input=new Array();
              var e=new Enumerator(Request.QueryString);
              for (;!e.atEnd();e.moveNext()){
                x=e.item();
                input[String(x).toLowerCase()]=String(Request.QueryString(x));
              }
              e=new Enumerator(Request.Form);
              for (;!e.atEnd();e.moveNext()){
                x=e.item();
                input[String(x).toLowerCase()]=String(Request.Form(x));
              }
              return input;
          }

          function fiskerOpenid(){
            this.url="";
            this.server="";
            this.delegate="";
            this.user = null;
            this.trust_root="";
            this.return_to="";
            this.sreg_required="nickname,email";

            this.get = function(info){
              if(!this.init()){Response.write("error");return;}
              if(info!=undefined)this.sreg_required=info;
              var html=this.request(this.server,"openid.mode=associate&openid.assoc_type=HMAC-SHA1");
              if (html==""){Response.write("error");return;}
              var assoc_handle = "";
              var assoc_type = "";
              var expires_in = "";
              var mac_key = "";
              try{
                var re=new RegExp("assoc_handle:(.+)","ig");
                assoc_handle = re.exec(html)[1];
                var re=new RegExp("assoc_type:(.+)","ig");
                aassoc_type = re.exec(html)[1];
                var re=new RegExp("expires_in:(.+)","ig");
                expires_in = re.exec(html)[1];
                var re=new RegExp("mac_key:(.+)","ig");
                mac_key = re.exec(html)[1];
                delete re;
              }catch(e){}

              var url = this.server;
              url += url.indexOf("?")!=-1?"&":"?";
              url += "openid.mode="+Server.URLEncode("checkid_setup");
              url += "&openid.identity="+Server.URLEncode(this.delegate);
              url += "&openid.trust_root="+Server.URLEncode(this.trust_root);
              url += "&openid.return_to="+Server.URLEncode(this.return_to);
              url += "&openid.assoc_handle="+Server.URLEncode(assoc_handle);
              url += "&openid.sreg.required="+Server.URLEncode(this.sreg_required);

              Response.Redirect(url);
            }

            this.init = function(){
              if(!this.check()) return false;

              if(this.trust_root==""||this.return_to==""){
                var thisServer="";
                var thisUrl="";
                thisServer+=String(Request.serverVariables("https")).toLowerCase()=="off"?"http://":"https://";
                thisServer+=String(Request.serverVariables("server_name"));
                thisServer+=String(Request.serverVariables("server_port"))=="80"?"":":"+String(Request.ServerVariables("server_port"));
                thisUrl+=thisServer;
                thisUrl+=String(Request.serverVariables("URL"));
                thisUrl+=String(Request.QueryString)==""?"":"?"+String(Request.QueryString);
                this.trust_root=(this.trust_root==""?thisServer:this.trust_root);
                this.return_to=(this.return_to==""?thisUrl:this.return_to);
              }

              var html = this.request(this.url);
              if (html=="") return false;
              html=html.replace(/'/ig,""");
              var re=new RegExp("<link(.*?)rel="(.*?)"(.*?)href="(.*?)"(.*?)>","ig");
              var arr=[];
              while ((arrMatch = re.exec(html)) != null){
                var index=arrMatch[2].toLowerCase();
                var value=arrMatch[4];
                if(index.indexOf(" ")){
                  for(var j=0;j<index.split(" ").length;j++)arr[index.split(" ")[j]]=value;
                }else{
                  arr[index]=value;
                }
              }
              delete re;
              if(arr["openid.server"]!=""){
                this.server=arr["openid.server"];
              }else{
                return false;
              }
              this.delegate = arr["openid.delegate"]==undefined?this.url:arr["openid.delegate"];
              return true;
            }

            this.check = function(){
              if (this.url=="") return false;
              if(this.url.indexOf("://")==-1) this.url="http://"+this.url;
              return true;
            }

            this.request = function(url,data){
              if (data == undefined)var data = null;
              var method = data ? 'POST' : 'GET';
              var html="";
              try{
                var xmlhttp=Server.CreateObject("MSXML2.Serverxmlhttp.3.0");
                xmlhttp.open(method,url,false);
                xmlhttp.send(data);
                  html = this.bytesToStr(xmlhttp.responseBody);
                delete xmlhttp;
              }catch(e){}
                return html;
              }

            this.bytesToStr = function(CodeBody){
              var objStream= Server.CreateObject("ado"+"db.stream") ;
              objStream.Type = 1 ;
              objStream.Mode =3 ;
              objStream.Open() ;
              objStream.Write(CodeBody);
              objStream.Position = 0 ;
              objStream.Type = 2 ;
              objStream.charset = "utf-8" ;
              var returnstr = objStream.ReadText;
              objStream.Close();
              delete objStream;
              return returnstr;
            }

          }
          </script>

          本文關鍵詞:openid登錄技巧方法
          本文《asp寫的一個openid登錄技巧方法》是由合肥德曼電腦培訓中心原創或來源網絡信息整理!
          本文網頁路徑:http://www.ledelektronik.com/asp/315.html

          合肥德曼培訓中心 - 致力于互聯網職業技能培訓。本站所有內容都是提供培訓所用,版權所有,未經書面授權不得轉載。服務宗旨:為中國互聯網人才需求提供原動力。
          我們培訓課程包括:SEO培訓、PHP培訓、網頁設計培訓、網絡營銷培訓 - 我們的目標是做中國最專業的互聯網技術培訓公司之一。在線QQ:513816851
          高清对白精彩国产国语