SP课程设计QQ登陆系统含源代码

合集下载

PHP实现QQ第三方登录代码

PHP实现QQ第三方登录代码

PHP实现QQ第三⽅登录代码前⾔:PHP实现QQ快速登录,罗列了三种⽅法⽅法⼀:⾯向过程,回调地址和⾸次触发登录写到了⼀个⽅法页⾯【因为有了if做判断】,⽅法⼆,三:⾯向对象1.先调⽤登录⽅法,向腾讯发送请求,2.腾讯携带本⽹站唯⼀对应参数OPENID,ACCESSTOKEN,返回到对应回调页⾯,3.回调页⾯接受到腾讯的参数后,通过这个两个参数,再发出对应的请求,如查询⽤户的数据。

4.腾讯做出对应的操作,如返回这个⽤户的数据给你即使你没看懂,也没关系,按照我下⾯的流程来,保证你可以实现。

前期准备:使⽤⼈家腾讯的功能,总得和⼈家打招呼吧!进⼊⽹址后,按如下操作来:⼀.进⼊官⽹⼆.申请创建【⽹站】应⽤三.按要求填写资料【详细的申请填写,请见官⽅提⽰,这⾥不做赘述】四.申请成功后,完善信息最终要求,获得APP_ID ,APP_KEY五.代码部分:在你对应的PHP⽂件内写⼊,如下⽅法⼀,⾯向过程法使⽤⽅法:配置$app_id,$app_secret,$my_url后,其他原封复制即可,$user_data为返回的登录信息代码:----------------------------------------------------------------------------------------------------------------------------------------------------------//应⽤的APPID$app_id= "你的APPID";//应⽤的APPKEY$app_secret= "你的APPKEY";//【成功授权】后的回调地址,即此地址在腾讯的信息中有储存$my_url= "你的回调⽹址";//Step1:获取Authorization Codesession_start();$code= $_REQUEST["code"];//存放Authorization Codeif(empty($code)){//state参数⽤于防⽌CSRF攻击,成功授权后回调时会原样带回$_SESSION['state'] = md5(uniqid(rand(), TRUE));//拼接URL$dialog_url= "https:///oauth2.0/authorize?response_type=code&client_id=". $app_id. "&redirect_uri=". urlencode($my_url) . "&state=". $_SESSION['state'];echo("<script> top.location.href='". $dialog_url. "'</script>");}//Step2:通过Authorization Code获取Access Tokenif($_REQUEST['state'] == $_SESSION['state'] || 1){//拼接URL$token_url= "https:///oauth2.0/token?grant_type=authorization_code&". "client_id=". $app_id. "&redirect_uri=". urlencode($my_url). "&client_secret=". $app_secret. "&code=". $code;$response= file_get_contents($token_url);if(strpos($response, "callback") !== false)//如果登录⽤户临时改变主意取消了,返回true!==false,否则执⾏step3{$lpos= strpos($response, "(");$rpos= strrpos($response, ")");$response= substr($response, $lpos+ 1, $rpos- $lpos-1);$msg= json_decode($response);if(isset($msg->error)){echo"<h3>error:</h3>". $msg->error;echo"<h3>msg :</h3>". $msg->error_description;exit;}}//Step3:使⽤Access Token来获取⽤户的OpenID$params= array();parse_str($response, $params);//把传回来的数据参数变量化$graph_url= "https:///oauth2.0/me?access_token=".$params['access_token'];$str= file_get_contents($graph_url);if(strpos($str, "callback") !== false){$lpos= strpos($str, "(");$rpos= strrpos($str, ")");$str= substr($str, $lpos+ 1, $rpos- $lpos-1);}$user= json_decode($str);//存放返回的数据 client_id ,openidif(isset($user->error)){echo"<h3>error:</h3>". $user->error;echo"<h3>msg :</h3>". $user->error_description;exit;}//echo("Hello " . $user->openid);//echo("Hello " . $params['access_token']);//Step4:使⽤<span >openid,</span><span >access_token来获取所接受的⽤户信息。

学生登陆界面源代码

学生登陆界面源代码

<%@page contentType="text/html;charset=utf-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>学生登陆</title><style type="text/css"><!--#Layer1 {position:absolute;width:625px;height:29px;z-index:1;left: 333px;top: 71px;}.STYLE1 {font-size: 60px;color: #5D4328;}#Layer2 {position:absolute;width:268px;height:30px;z-index:2;left: 16px;top: 23px;}#Layer3 {position:absolute;width:200px;height:43px;z-index:3;left: 481px;top: 213px;}.STYLE3 {font-size: 62px}.STYLE4 {font-size: 24px}#Layer4 {position:absolute;width:329px;height:168px;z-index:3;left: 446px;top: 190px;}#Layer5 {position:absolute;width:200px;height:115px;z-index:3;left: 602px;top: 304px;}#Layer6 {position:absolute;width:391px;height:261px;z-index:3;left: 342px;top: 205px;}#Layer7 {position:absolute;width:207px;height:170px;z-index:4;left: 657px;top: 301px;}.STYLE5 {font-size: 24px;color: #996600;font-weight: bold;}.STYLE8 {font-size: 14px; }--></style><script type="text/javascript" src="../js/jquery-1.4.3.js"></script> <script type="text/javascript" >//标识各项是否通过var flag={"name":false,"password":false};$(function(){//用户email非空,格式检查$('#txtStudentname').blur(function(){$(this).html("");var emailTXT=$('#txtStudentname').val().trim();if(emailTXT==""){$("#name\\.info").html("name地址不能为空");return;}flag.email=true;$("#name\\.info").html("<imgsrc='../image/label3_s.gif'/>");});});//密码项:非空,长度6-20字符$(function(){$("#txtPassword").blur(function(){$("#password\\.info").html("");var passwordTXT=$("#txtPassword").val().trim();//检查非空if(passwordTXT==""){$("#password\\.info").html("密码不能为空");return;}});});//表单提交事件$("#f").submit(function(){var ok=flag.email&&flag.password;if(!flag.email){$('login\\.info').html("用户名不能为空");return;//不做任何处理或者给个操作提示}if(!flag.password){$('login\\.info').html("密码不能为空");return;//不做任何处理或者给个操作提示}return true;} );</script></head><body><form action="../student/login.action" method="post" id="f"><table width="1189" height="460" bordercolor="#03BAa0"><tr><td height="152" colspan="3"><img src="../image/title.jpg"width="1217" height="147" /><div id="Layer2"><strong>欢迎您!</strong></div><divclass="STYLE1" id="Layer1"><div align="center"><strong><span class="STYLE3">C</span>语言考试系统</strong></div></div></td></tr><tr><td>&nbsp;</td><td width="398" bgcolor="#03BAa0"><div align="center" class="STYLE5"> <div align="center">学生登陆</div></div></td><form id="form1" name="form1" method="post"action="../student/login.action"><td height="79">&nbsp;</td></tr><tr align="center"><td width="382" rowspan="2">&nbsp;</td><td height="150" bgcolor="#03BAa0"><p align="center" class="STYLE8">用户名<input type="text" name="name" id="txtStudentname" /><a id="" style="color:red"></a></p><p align="center" class="STYLE4"><span class="STYLE8">密码<input type="text" name="password" id="txtPassword" /><a id="" style="color:red"></a></span></p></td><td width="403" height="325" rowspan="2"><div align="center"></div> <div align="center"></div></td></tr><tr align="center"><td height="23" bgcolor="#03BAa0"><div align="center"><input type="submit" bgcolor="#03BAa0" name="Submit" value="提交" /> &nbsp;<input type="submit" bgcolor="#03BAa0"name="Reset" value="取消" /><span id="" style="color:red"></span></div></td></tr><tr><td colspan="3" bgcolor="#03BAC9"><span class="STYLE4">太原师范计算机系</span></td></tr></table></body></html>。

qq登录面板制作Java实训报告

qq登录面板制作Java实训报告

实验报告
学院:计算机科学学院专业:计算机科学与技术2020年5月1日姓名秦宏伟学号2019040131078
班级2班指导老师夏南
课程名称认知实习


实验名称Java实训-GUI应用
1.实验目的
⑴掌握Java的安装;
⑵提高学生本身对代码的认知;
⑶掌握简单Java代码的编写;
2.实验内容
编写一套简单的qq登录、注册的Java代码
3.实验环境
(1)开发环境jdk1.8.0(2)运行环境jre1.8.0(3)编译器Eclipse 4.实验方法和步骤(含设计)
①总体设计
②代码设计
登录面板
注册登录账号密码框
5.程序及测试结果
测试登录窗口
①点击运行文件,弹出窗口如下:
②在线方式
③登录错误提示。

asp.net网站实现接入QQ登录示例代码

asp.net网站实现接入QQ登录示例代码

⽹站实现接⼊QQ登录⽰例代码话不多说,直接上代码吧:string client_id = "分配的APP ID";string appid = " 分配的 APP KEY";string Return_url = "返回处理的url";public string Authorize(){string state = new Random(100000).Next(99, 99999).ToString();//随机数HttpHelper http = new HttpHelper();string url = string.Format("https:///oauth2.0/authorize?response_type=code&client_id={0}&redirect_uri={1}&state={2}", client_id, Return_url, state);string str="<script> location.href='" + url + "'</script>";return str;}点击事件直接调⽤Authorize()就可以了,我是直接⽤跳转链接处理的。

protected void Page_Load(object sender, EventArgs e){QQ_Login q = new QQ_Login();string url = q.Authorize();//这⾥调⽤Response.Write(url);}效果:点击图像,接着在,回调的url⾥⾯调⽤下⾯的⽅法,参数再往下看⼀点;public User_info Back_User(string code){string state = new Random(100000).Next(99, 99999).ToString();//随机数User_info ui = new User_info();string url = string.Format("https:///oauth2.0/token?grant_type=authorization_code&client_id={0}&client_secret={1}&code={2}&redirect_uri={3}&state={4}", client_id, appid, code, Return_url, state); string uu = HttpHelper.HtmlFromUrlGet(url);//处理http请求帮助类string code1 = uu.Split('&')[0].Split('=')[1].ToString();//获得access_token//根基access_token获取⽤户唯⼀OpenIDstring url_me = string.Format("https:///oauth2.0/me?access_token={0}" , code1);string callback = HttpHelper.HtmlFromUrlGet(url_me);//这⾥获取的callback = callback.Substring(callback.IndexOf('(') + 1, (callback.IndexOf(')') - callback.IndexOf('(') - 1)).Trim();// dynamic jsonP = JValue.FromObject(callback); //这⾥我⽤的是⼀个序列化类库 Newtonsoft.Json.dll 6.0.4版本⽆奈公司版本过低只能⽤4.0的版本建议使⽤6.0.4版本a jsonP = JsonConvert.DeserializeObject<a>(callback);//Newtonsoft.Json.dll 4.0或4.5版本string OpenID = jsonP.openid;//获取⽤户唯⼀的OpenID//根据OpenID获取⽤户信息可以显⽰更多⽤的就⼏个需要的可以⾃⼰在下⾯加string getinfo = string.Format("https:///user/get_user_info?access_token={0}&oauth_consumer_key={1}&openid={2}", code1, client_id, OpenID);string user = HttpHelper.HtmlFromUrlGet(getinfo);b info = JsonConvert.DeserializeObject<b>(user); = info.nickname;ui.OpenID = OpenID;ui.img_qq100 = info.figureurl_qq_1;ui.img_qq50 = info.figureurl_qq_2;ui.city = info.city;ui.year = info.year;ui.Type = 1;return ui;}点击图像时跳转到指定的回调地址,并在redirect_uri地址后带上Authorization Code;User_info ui = new User_info();var verifier = Request.Params["code"]; //获取Authorization Codeui = q.Back_User(verifier); 掉⽤⽅法并返回数据再把返回的类贴出来吧public class User_info{public string OpenID { get; set; }//⽤户唯⼀appidpublic string Name { get; set; }public string img_qq50 { get; set; } //QQ图像40*40public string img_qq100 { get; set; }public string city { get; set; }public int year { get; set; }}public class a {public string client_id { get; set; }public string openid { get; set; }}总结基本就完了,代码就这么多了,感兴趣的同学⾃⼰动⼿操作操作才能更加熟悉,希望本⽂对⼤家能有所帮助。

2013最新腾讯QQ登陆过程及代码【亲测有效】

2013最新腾讯QQ登陆过程及代码【亲测有效】

最新腾讯QQ登陆JS加密过程及代码/*//加密过程:var Q = jQuery.trim($('#q').val());var U = uin2hex(Q);//QQ号转16进制;(再插入\x)313838383930323134\xvar M = jQuery.trim($('#p').val());//QQ密码var I = hexchar2bin(md5(M));var H = md5(I + U);var V = jQuery.trim($('#v').val());//验证码var G = md5(H + V.toUpperCase());//加密js代码:var hexcase = 1;var b64pad = "";var chrsz = 8;var mode = 32;function md5(A) {return hex_md5(A)}function hex_md5(A) {return binl2hex(core_md5(str2binl(A), A.length * chrsz))}function str_md5(A) {return binl2str(core_md5(str2binl(A), A.length * chrsz))}function hex_hmac_md5(A, B) {return binl2hex(core_hmac_md5(A, B))}function b64_hmac_md5(A, B) {return binl2b64(core_hmac_md5(A, B))}function str_hmac_md5(A, B) {return binl2str(core_hmac_md5(A, B))}function core_md5(K, F) {K[F >> 5] |= 128 << ((F) % 32);K[(((F + 64) >>> 9) << 4) + 14] = F;var J = 1732584193;var I = -271733879;var H = -1732584194;var G = 271733878;for (var C = 0; C < K.length; C += 16) {var E = J;var D = I;var B = H;var A = G;J = md5_ff(J, I, H, G, K[C + 0], 7, -680876936);G = md5_ff(G, J, I, H, K[C + 1], 12, -389564586);H = md5_ff(H, G, J, I, K[C + 2], 17, 606105819);I = md5_ff(I, H, G, J, K[C + 3], 22, -1044525330);J = md5_ff(J, I, H, G, K[C + 4], 7, -176418897);G = md5_ff(G, J, I, H, K[C + 5], 12, 1200080426);H = md5_ff(H, G, J, I, K[C + 6], 17, -1473231341);I = md5_ff(I, H, G, J, K[C + 7], 22, -45705983);J = md5_ff(J, I, H, G, K[C + 8], 7, 1770035416);G = md5_ff(G, J, I, H, K[C + 9], 12, -1958414417);H = md5_ff(H, G, J, I, K[C + 10], 17, -42063);I = md5_ff(I, H, G, J, K[C + 11], 22, -1990404162);J = md5_ff(J, I, H, G, K[C + 12], 7, 1804603682);G = md5_ff(G, J, I, H, K[C + 13], 12, -40341101);H = md5_ff(H, G, J, I, K[C + 14], 17, -1502002290);I = md5_ff(I, H, G, J, K[C + 15], 22, 1236535329);J = md5_gg(J, I, H, G, K[C + 1], 5, -165796510);G = md5_gg(G, J, I, H, K[C + 6], 9, -1069501632);H = md5_gg(H, G, J, I, K[C + 11], 14, 643717713);I = md5_gg(I, H, G, J, K[C + 0], 20, -373897302);J = md5_gg(J, I, H, G, K[C + 5], 5, -701558691);G = md5_gg(G, J, I, H, K[C + 10], 9, 38016083);H = md5_gg(H, G, J, I, K[C + 15], 14, -660478335);I = md5_gg(I, H, G, J, K[C + 4], 20, -405537848);J = md5_gg(J, I, H, G, K[C + 9], 5, 568446438);G = md5_gg(G, J, I, H, K[C + 14], 9, -1019803690);H = md5_gg(H, G, J, I, K[C + 3], 14, -187363961);I = md5_gg(I, H, G, J, K[C + 8], 20, 1163531501);J = md5_gg(J, I, H, G, K[C + 13], 5, -1444681467);G = md5_gg(G, J, I, H, K[C + 2], 9, -51403784);H = md5_gg(H, G, J, I, K[C + 7], 14, 1735328473);I = md5_gg(I, H, G, J, K[C + 12], 20, -1926607734);J = md5_hh(J, I, H, G, K[C + 5], 4, -378558);G = md5_hh(G, J, I, H, K[C + 8], 11, -2022574463);H = md5_hh(H, G, J, I, K[C + 11], 16, 1839030562);I = md5_hh(I, H, G, J, K[C + 14], 23, -35309556);J = md5_hh(J, I, H, G, K[C + 1], 4, -1530992060);G = md5_hh(G, J, I, H, K[C + 4], 11, 1272893353);H = md5_hh(H, G, J, I, K[C + 7], 16, -155497632);I = md5_hh(I, H, G, J, K[C + 10], 23, -1094730640);J = md5_hh(J, I, H, G, K[C + 13], 4, 681279174);G = md5_hh(G, J, I, H, K[C + 0], 11, -358537222);H = md5_hh(H, G, J, I, K[C + 3], 16, -722521979);I = md5_hh(I, H, G, J, K[C + 6], 23, 76029189);J = md5_hh(J, I, H, G, K[C + 9], 4, -640364487);G = md5_hh(G, J, I, H, K[C + 12], 11, -421815835);H = md5_hh(H, G, J, I, K[C + 15], 16, 530742520);I = md5_hh(I, H, G, J, K[C + 2], 23, -995338651);J = md5_ii(J, I, H, G, K[C + 0], 6, -198630844);G = md5_ii(G, J, I, H, K[C + 7], 10, 1126891415);H = md5_ii(H, G, J, I, K[C + 14], 15, -1416354905);I = md5_ii(I, H, G, J, K[C + 5], 21, -57434055);J = md5_ii(J, I, H, G, K[C + 12], 6, 1700485571);G = md5_ii(G, J, I, H, K[C + 3], 10, -1894986606);H = md5_ii(H, G, J, I, K[C + 10], 15, -1051523);I = md5_ii(I, H, G, J, K[C + 1], 21, -2054922799);J = md5_ii(J, I, H, G, K[C + 8], 6, 1873313359);G = md5_ii(G, J, I, H, K[C + 15], 10, -30611744);H = md5_ii(H, G, J, I, K[C + 6], 15, -1560198380);I = md5_ii(I, H, G, J, K[C + 13], 21, 1309151649);J = md5_ii(J, I, H, G, K[C + 4], 6, -145523070);G = md5_ii(G, J, I, H, K[C + 11], 10, -1120210379);H = md5_ii(H, G, J, I, K[C + 2], 15, 718787259);I = md5_ii(I, H, G, J, K[C + 9], 21, -343485551);J = safe_add(J, E);I = safe_add(I, D);H = safe_add(H, B);G = safe_add(G, A)}if (mode == 16) {return Array(I, H)} else {return Array(J, I, H, G)}}function md5_cmn(F, C, B, A, E, D) {return safe_add(bit_rol(safe_add(safe_add(C, F), safe_add(A, D)), E), B) }function md5_ff(C, B, G, F, A, E, D) {return md5_cmn((B & G) | ((~B) & F), C, B, A, E, D)}function md5_gg(C, B, G, F, A, E, D) {return md5_cmn((B & F) | (G & (~F)), C, B, A, E, D)}function md5_hh(C, B, G, F, A, E, D) {return md5_cmn(B ^ G ^ F, C, B, A, E, D)}function md5_ii(C, B, G, F, A, E, D) {return md5_cmn(G ^ (B | (~F)), C, B, A, E, D)}function core_hmac_md5(C, F) {var E = str2binl(C);if (E.length > 16) {E = core_md5(E, C.length * chrsz)}var A = Array(16),D = Array(16);for (var B = 0; B < 16; B++) {A[B] = E[B] ^ 909522486;D[B] = E[B] ^ 1549556828}var G = core_md5(A.concat(str2binl(F)), 512 + F.length * chrsz);return core_md5(D.concat(G), 512 + 128)}function safe_add(A, D) {var C = (A & 65535) + (D & 65535);var B = (A >> 16) + (D >> 16) + (C >> 16);return (B << 16) | (C & 65535)}function bit_rol(A, B) {return (A << B) | (A >>> (32 - B))}function str2binl(D) {var C = Array();var A = (1 << chrsz) - 1;//alert(chrsz);for (var B = 0; B < D.length * chrsz; B += chrsz) {C[B >> 5] |= (D.charCodeAt(B / chrsz) & A) << (B % 32) }//alert(C);return C}function binl2str(C) {var D = "";var A = (1 << chrsz) - 1;for (var B = 0; B < C.length * 32; B += chrsz) {D += String.fromCharCode((C[B >> 5] >>> (B % 32)) & A)}return D}function binl2hex(C) {var B = hexcase ? "0123456789ABCDEF": "0123456789abcdef";var D = "";for (var A = 0; A < C.length * 4; A++) {D += B.charAt((C[A >> 2] >> ((A % 4) * 8 + 4)) & 15) + B.charAt((C[A >> 2] >> ((A % 4) * 8)) & 15)}return D}function binl2b64(D) {var C = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";var F = "";for (var B = 0; B < D.length * 4; B += 3) {var E = (((D[B >> 2] >> 8 * (B % 4)) & 255) << 16) | (((D[B + 1 >> 2] >> 8 * ((B + 1) % 4)) & 255) << 8) | ((D[B + 2 >> 2] >> 8 * ((B + 2) % 4)) & 255);for (var A = 0; A < 4; A++) {if (B * 8 + A * 6 > D.length * 32) {F += b64pad} else {F += C.charAt((E >> 6 * (3 - A)) & 63)}}}return F}function hexchar2bin(str) {var arr = [];for (var i = 0; i < str.length; i = i + 2) {arr.push("\\x" + str.substr(i, 2))}arr = arr.join("");//alert(arr);eval("var temp = '" + arr + "'");//alert(temp);return temp;}function uin2hex(str) {var maxLength = 16;str = parseInt(str);var hex = str.toString(16);var len = hex.length;for (var i = len; i < maxLength; i++) {hex = "0" + hex}var arr = [];for (var j = 0; j < maxLength; j += 2) {arr.push("\\x" + hex.substr(j, 2)) }var result = arr.join("");eval('result="' + result + '"');return result}。

QQ登录界面java代码

QQ登录界面java代码
}
}
jp=newJPanel();
jp.setLayout(null);
jp_jlb1=newJLabel(newImageIcon("image/qqtou.gif"));
jp_jlb1.setBounds(18, 10, 85, 85);//设置标签位置前提是要空布局
jp_jtf=newJTextField("QQ号码/手机/邮箱");
this.add(jp,BorderLayout.CENTER);//放到中部
this.setIconImage(newImageIcon("image/qq.gif").getImage());//设置窗口上的qq小图片
this.setResizable(false);//不允许放大,改变窗口大小等
JFrame jf =newJFrame(title);
Containercontainer= jf.getContentPane();
lb1=newJLabel(newImageIcon("image/tou.gif"));
lb2=newJLabel(newImageIcon("image/qqtou.gif"));
this.setSize(380,275);
this.setLocation(500,200);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
jp_jb2.setFont(f1);
jp_jb2.setBounds(95, 120, 65, 21);
jp_jb3=newJButton("登录");

[C#]QQ开放平台(QQ站外登录)_流程和源码示例

[C#]QQ开放平台(QQ站外登录)_流程和源码示例

[C#]QQ开放平台(QQ站外登录)_流程和源码示例本人阿旭,近期研究QQ开放平台的程序开发。

因为使用.NET语言,到官方SDK下载竟然是一个DLL,下来经过反编译也没搞清楚怎么弄,晕菜。

后来网上见一PHP源码,写的不错,按其原理,开发成了C#语言,本示例程序使用的OAuth2.0,是目前最新执口版本,写下来希望对大家有所帮忙。

本文内容∙QQ开放平台(QQ登录)开发介绍∙准备工作∙QQ开放平台中QQ登录程序运行流程∙示例源码∙本地测试方法QQ开放平台(QQ登录)开发介绍QQ开放平台是针对QQ网站以外的网站开发的信息共享接口,各网站通过实现QQ代码实现,可以与QQ网站的交换数据。

本文说的是腾讯的OpenID开发,相关OpenID的相关文章,是有相关技术标准的,大家可以看百科会更详细。

简单来说,就是说,在用户登录网站时,只使用绑定QQ的QQ帐号进行登录即可,无需每次去输入各网站的密码...准备工作访问:/,点击(图1)上的QQ登录链接,然后点击(图2)中“申请加入”链接,输入你的QQ帐号进行QQ登录验证,点击(图3)中的“添加网站/应用”链接。

输入网站相关信息和网站验证后,会显示(图4)显示的管理中心界面。

上面显示着AppID 和AppKey,下面的程序中将会用到,保密数据,请误泄露哈!图1图2图3图4QQ开放平台中QQ登录程序运行流程1、客户端浏览器转向QQ验证页面,用户输入用户名密码后,QQ网站回调回开发者网站,并传回Authorization Code。

2、开发者网站发送获取到的Authorization Code后,将Authorization Code和AppID、AppKey使用Http协议发送给腾讯,腾讯验证后返回登录结果。

3、如果验证成功,返回用户的OpenID,OpenID是登录用户登录后的在开发者网站中唯一标识,升度为32位,字符范围为0-9A-F。

示例程序源码using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.UI;using System.Web.UI.WebControls;using ;using System.IO;using System.Text;using System.Web.Script.Serialization;using System.Collections.Specialized;using System.Text.RegularExpressions;public partial class _Default : System.Web.UI.Page{private static Random RndSeed = new Random();public string GenerateRndNonce(){return (RndSeed.Next(1, 0x5f5e0ff).ToString("00000000") + RndSeed.Next(1, 0x5f5e0ff).ToString("00000000") +RndSeed.Next(1, 0x5f5e0ff).ToString("00000000") + RndSeed.Next(1, 0x5f5e0ff).ToString("00000000"));}public string file_get_contents(string url,Encoding encode){HttpWebRequestrequest=(HttpWebRequest)HttpWebRequest.Create(url);WebResponse response= request.GetResponse();using(MemoryStream ms=new MemoryStream()){using(Stream stream =response.GetResponseStream()){int readc;byte[] buffer=new byte[1024];while((readc=stream.Read(buffer,0,buffer.Length))>0) {ms.Write(buffer,0,readc);}}return encode.GetString(ms.ToArray());}}NameValueCollection ParseJson(string json_code){NameValueCollection mc= new NameValueCollection();Regex regex = newRegex(@"(\s*\""?([^""]*)\""?\s*\:\s*\""?([^""]*)\""?\,?)");json_code=json_code.Trim();if(json_code.StartsWith("{")){json_code=json_code.Substring(1,json_code.Length-2); }foreach (Match m in regex.Matches(json_code)){mc.Add(m.Groups[2].Value, m.Groups[3].Value);//Response.Write(m.Groups[2].Value + "=" +m.Groups[3].Value + "<br/>");}return mc;}NameValueCollection ParseUrlParameters(string str_params) {NameValueCollection nc = new NameValueCollection();foreach (string p in str_params.Split('&')){string[] p_s = p.Split('=');nc.Add(p_s[0], p_s[1]);}return nc;}protected void Page_Load(object sender, EventArgs e){//应用的APPIDstring app_id = "粘贴你的APPID";//应用的APPKEYstring app_secret = "粘贴你的APPKey";//成功授权后的回调地址string my_url = "/Default.aspx";//Step1:获取Authorization Code//session_start();string code = Request.QueryString["code"];if (string.IsNullOrEmpty(code)){//state参数用于防止CSRF攻击,成功授权后回调时会原样带回 Session["state"] = GenerateRndNonce();//md5(uniqid(rand(), TRUE));//拼接URLstring dialog_url ="https:///oauth2.0/authorize?response_type=code&client_id ="+ app_id + "&redirect_uri=" + Server.UrlEncode(my_url) + "&state="+ Session["state"];Response.Write("<script> location.href='" + dialog_url + "'</script>");Response.End();}//Step2:通过Authorization Code获取Access Tokenif(Request["state"].ToString().Equals(Session["state"].ToString())){//拼接URLstring token_url ="https:///oauth2.0/token?grant_type=authorization_code&" + "client_id=" + app_id + "&redirect_uri=" +Server.UrlEncode(my_url)+ "&client_secret=" + app_secret + "&code=" + code;string response = file_get_contents(token_url, Encoding.UTF8);NameValueCollection msg;if (response.IndexOf("callback") != -1){int lpos = response.IndexOf("(");int rpos = response.IndexOf(")");response = response.Substring(lpos + 1, rpos - lpos - 1); msg = ParseJson(response);if (!string.IsNullOrEmpty(msg["error"])){Response.Write("<h3>error:</h3>" +msg["error"].ToString());Response.Write("<h3>msg :</h3>" +msg["error_description"]);Response.End(); return;}}//Response.Write(response);//Step3:使用Access Token来获取用户的OpenIDNameValueCollection ps = ParseUrlParameters(response);//*parse_str($response, $params);string graph_url ="https:///oauth2.0/me?access_token=" + ps["access_token"]; string str = file_get_contents(graph_url,Encoding.Default);if (str.IndexOf("callback") != -1){int lpos = str.IndexOf("(");int rpos = str.IndexOf(")");str = str.Substring(lpos + 1, rpos - lpos - 1);}NameValueCollection user = ParseJson(str);if (!string.IsNullOrEmpty(user["error"])){Response.Write("<h3>error:</h3>" + user["error"]);Response.Write("<h3>msg :</h3>" +user["error_description"]);Response.End();}Response.Write("Hello " + user["openid"]);}else{Response.Write("The state does not match. You may be a victim of CSRF.request=" + Request["state"] + ",session=" + Session["state"]); }Response.End();}}本地测试方法1、用记事本打开:C:\Windows\System32\drivers\etc\hosts文件2、新增行“127.0.0.1域名”,比如:127.0.0.1 www.jishu.me即可(当前这个域名必须是QQ开放平台“添加网站/应用”时输入的域名,否则会报错)。

SP课程设计QQ登陆系统含源代码

SP课程设计QQ登陆系统含源代码

目录1 前言 ........................................................................................................................... 页码问题提出 ........................................................ 页码研究意义 ........................................................ 页码2 系统需求分析 ............................................................................................................. 页码系统功能分析.............................................................................................................. 页码系统功能模块设计...................................................................................................... 页码3 数据库的概念结构设计............................................ 页码数据抽象 ......................................................... 页码设计全局概念模式 ................................................. 页码4 数据库的逻辑设计................................................. 页码形成初始的关系模式 ............................................... 页码关系模式的规范化处理.............................................. 页码5系统的实现与调试 ................................................. 页码6 总结............................................................... 页码参考文献 .......................................................................................................................... 页码1 前言问题提出随着嵌入式的发展,近年来,嵌入式在社会发展中占据着越来越重要的地位。

QQ仿真登录

QQ仿真登录

QQ仿真登录QQ仿真登录2. [代码]Swing写的QQ登录界面跳至[2] [全屏预览]view sourceprint?001importjava.awt.Container;002import java.awt.Image;003import java.awt.event.ActionEvent;004importjava.awt.event.ActionListener;005 006importjavax.swing.ImageIcon;007importjavax.swing.JButton;008importjavax.swing.JCheckBox;009importjavax.swing.JComboBox;010importjavax.swing.JFrame;011import javax.swing.JLabel;012import javax.swing.JOptionPane;013importjavax.swing.JPasswordField;014importjavax.swing.JTextField;015 016/**017 * 仿QQ登录界面018 *019 * @author jiang020 */021public class GUIQQ extends JFrame {022 // 用户名023 private JTextField username;024 // 密码025 private JPasswordField password;026 // 小容器027 private JLabel jl1;028 private JLabel jl2;029 private JLabel jl3;030 private JLabel jl4;031 032 // 小按钮033 private JButtonbu1;034 private JButton bu2;035 private JButtonbu3;036 037 // 复选框038 private JCheckBox jc1;039 private JCheckBox jc2;040 041 // 列表框042 private JComboBox jcb;043 044 /*045 * 构造方法046*/047 public GUIQQ() {048 // 设置窗口标题049 this.setTitle("QQ2012正式版");050 // 窗体组件初始化051 init();052this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);053 // 设置布局方式为绝对定位054this.setLayout(null);055 056this.setBounds(0, 0, 355, 265);057 // 设置窗体的标题图标058 Image image = newImageIcon("e:/a.gif").getImage();059this.setIconImage(image);060 061 // 窗体大小不能改变062 this.setResizable(false);063064 // 居中显示065this.setLocationRelativeTo(null);066 067 // 窗体可见068 this.setVisible(true);069 }070 071 /*072 * 初始化方法073 */074 public void init() {075// 创建一个容器076 Container con =this.getContentPane();077 jl1 = new JLabel();078// 设置背景图片079 Image image1 = new ImageIcon("e:/background.jpg").getImage();080jl1.setIcon(new ImageIcon(image1));081jl1.setBounds(0, 0, 355, 265);082 083 // QQ 登录头像设定084 jl2 = new JLabel();085Image image2 = new ImageIcon("e:/a.gif").getImage();086jl2.setIcon(new ImageIcon(image2));087jl2.setBounds(40, 95, 50, 60);088 089 // 用户号码登录输入框090 username = new JTextField();091 username.setBounds(100, 100, 150, 20);092 // 用户号码登录输入框旁边的文字093 jl3 = new JLabel("注册账号");094 jl3.setBounds(260, 100, 70, 20);095 096 // 密码输入框097 password = new JPasswordField();098 password.setBounds(100, 130, 150, 20);099 // 密码输入框旁边的文字100jl4 = new JLabel("找回密码");101 jl4.setBounds(260, 130, 70, 20);102 103 // 输入框下方文字104jc1 = new JCheckBox("记住密码");105jc1.setBounds(105, 155, 80, 15);106 jc2 = new JCheckBox("自动登录");107 jc2.setBounds(185, 155, 80, 15);108 109 // 用户登录状态选择110jcb = new JComboBox();111 jcb.addItem("在线");112 jcb.addItem("隐身");113 jcb.addItem("离开");114 jcb.setBounds(40, 150, 55, 20);115 116 // 按钮设定117 bu1 = new JButton("登录");118bu1.setBounds(280, 200, 65, 20);119 // 给按钮添加1个事件120 bu1.addActionListener(new ActionListener() {121 122@Override123 public voidactionPerformed(ActionEvent e) {124 String str=e.getActionCommand();125 if("登录".equals(str)){126 String getName=username.getText();127// String getPwd =password.getText();128JOptionPane.showConfirmDialog(null, "您输入的用户名是"+getName);129 }130131 }132 });133 134135 bu2 = new JButton("多账号");136bu2.setBounds(5, 200, 75, 20);137 bu3 = new JButton("设置");138 bu3.setBounds(100, 200, 65, 20);139 140 // 所有组件用容器装载141jl1.add(jl2);142 jl1.add(jl3);143jl1.add(jl4);144 jl1.add(jc1);145jl1.add(jc2);146 jl1.add(jcb);147jl1.add(bu1);148 jl1.add(bu2);149jl1.add(bu3);150 con.add(jl1);151con.add(username);152 con.add(password);153154 }155 156 public static void main(String[] args) {157 // 实例化对象158 GUIQQ qq = new GUIQQ();159 }160 161}。

QQ登录界面代码

QQ登录界面代码

QQ登录界面代码login.asp:<form name="login" method="post" action="after_login.asp"> 用户名:<input name="user_name" size="12" maxlength="16">密码:<input name="password" size="12" type="password"maxlength="16"><input align="absMiddle" id="image1" name="image1"src="images/login.gif" type="image" WIDTH="37" HEIGHT="20"> </form>coon.asp:<%connstr = "DBQ=" + server.mappathuser.mdb") +";DRIVER={Microsoft Access Driver (*.mdb)}"Set conn=Server.createobject("ADODB.CONNECTION")conn.Open connstr%>外加after_login.asp登录验证页面:<!--#include file="Conn.Asp"--><%Dim UserName,PassWordUserName=replace(trim(Request.Form("Username")),"'","‘") PassWord=replace(trim(Request.Form("PassWord")),"'","‘")If UserName="" or PassWord="" ThenResponse.Write ("<script>alert('会员登陆失败!\n\n错误原因:会员帐号和密码未填。

用VBScript制作QQ自动登录的脚本代码

用VBScript制作QQ自动登录的脚本代码

一直用的是狂人版的QQ,也用它附赠的自动登录器很久了,不过最近一版的狂人QQ 不知为何取消了自动登录组件。

好在QQ2009已经能够同时记住多个号码的密码,虽然要多点击几下,但依然能够实现免输入密码登录。

谁知最近不知道电脑发了什么疯,每隔一段时间,QQ记住的密码就会被清空。

我的两个QQ号密码都设置得比较复杂,每次登录要输入两遍密码实在是件痛苦的事情,于是决定自制一个登录器。

在网上找了许久,发现了一个用VBS制作QQ登录脚本的办法:代码如下:set WshShell = WScript.CreateObject("WScript.Shell") &nbsp; '创建一个Shell对象WshShell.Run "C:\Progra~1\Tencent\QQ\QQ.exe" &nbsp; &nbsp; &nbsp;'运行QQ,这里改成你自己的QQ目录WScript.Sleep 3000 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;'休眠3000毫秒(停止3秒)WshShell.SendKeys "{tab}"WScript.Sleep 100WshShell.SendKeys "xxxxxxxxx" &nbsp; &nbsp; &nbsp;'这里的xxxx用你的QQ号码代替Wscript.Sleep 100WshShell.SendKeys "{tab}"Wscript.Sleep 100WshShell.SendKeys "********" &nbsp; &nbsp; &nbsp;'这里的****用你的QQ密码代替Wscript.Sleep 1000WshShell.Sendkeys "{enter}"需要注意的是,文件夹的名如果大于8个字符或者中间有空格,要写成“PROGRA~1”这种形式,就是保留名字的前6个字母然后加上“~1”,这个“~1”代表前6个字母相同文件夹名字的第一个文件夹,例如有2个文件夹中间都有空格:Program Files和Program Filez,那就先以名称排列图标,看最前面的就是~1,第2个就是~2可是把代码复制过来后,却始终说密码错误。

课程设计qq聊天系统源代码

课程设计qq聊天系统源代码

课程设计qq聊天系统源代码一、课程目标知识目标:1. 让学生掌握QQ聊天系统的基础知识,包括网络通信原理、客户端与服务器间的交互过程。

2. 学习并理解QQ聊天系统源代码的结构和功能,掌握相关编程语法和逻辑。

技能目标:1. 培养学生运用所学知识,独立编写和修改QQ聊天系统源代码的能力。

2. 提高学生的问题解决能力,使其能够分析和解决在开发QQ聊天系统过程中遇到的技术难题。

情感态度价值观目标:1. 激发学生对计算机编程和网络通信的兴趣,培养其探索精神和创新意识。

2. 培养学生的团队协作精神,使其在项目开发过程中学会与他人沟通与协作。

3. 引导学生认识到网络通信技术在社会发展中的重要性,激发其社会责任感和使命感。

课程性质:本课程为实践性较强的课程,以项目驱动的方式进行教学,使学生能够将所学理论知识应用于实际项目中。

学生特点:学生具备一定的编程基础和网络通信知识,对新鲜事物充满好奇心,喜欢动手实践。

教学要求:教师需注重理论与实践相结合,关注学生的个体差异,提供针对性的指导,以提高学生的学习兴趣和自信心。

同时,注重培养学生的团队协作能力和解决问题的能力。

在教学过程中,将课程目标分解为具体的学习成果,以便进行有效的教学设计和评估。

二、教学内容1. 网络通信原理:讲解TCP/IP协议、客户端与服务器模型、端口号等基本概念,为学生编写QQ聊天系统源代码打下理论基础。

2. 编程语言:介绍QQ聊天系统源代码所使用的编程语言(如Java、C#等),复习相关语法知识,强调面向对象编程思想。

3. QQ聊天系统架构:分析QQ聊天系统的整体架构,包括客户端、服务器端的模块划分和功能描述,使学生了解整个系统的运行机制。

4. 源代码解析:详细讲解QQ聊天系统源代码的结构、关键函数和功能模块,指导学生阅读和分析源代码,掌握其工作原理。

5. 编写与调试:教授学生如何编写和修改QQ聊天系统源代码,进行功能拓展和优化,并通过调试工具进行问题排查和修复。

QQ源代码分析

QQ源代码分析

QQ源代码分析(5664版)一、源文件分析1、应用程序框架类:KQQMIDlet.java定义了一个http地址:http://218.18.95.203:21001/,在构造函数中,对一些变量进行初始化。

公共变量:public static KQQMIDlet instance = null;public static Display display = null;public static Runtime runtime = null;public int gaugeState;public String strUserID;public String strPasswd;public static String url = "http://218.18.95.203:21001/";public static MainMenu mainMenu;public static HttpPoster httpPoster;public static FriendRecord friendRecord;public static FriendList friendList;public static GetMsgDlg getMsgDlg;public static SendMsgDlg sendMsgDlg;public static AddFriend addFriend;public static Finger finger;public static AckSvrMsg ackSvrMsg;public static MainForm mainForm;public static BlackList blackList;public static MultiLan sysString;public static HistoryMsg historyMsg;public boolean isWaitLogin;公共方法:public void init()public void startApp() 应用程序开始函数;当应用程序开始运行时、应用程序暂停后再继续时被调用;根据不同的情况进行不同的操作:当应用程序是暂停后再继续则显示暂停前的屏幕,当应用程序是登录时并且不是等待登录则显示mainForm;public void pauseApp(); //程序暂停时被调用,当被调用时,第一时间设置好暂停标志isPause;然后判断是不是等待登录时的状态,若是则置等待登录标志,若不是则置dispPause变量;public void destroyApp(boolean flag); //仅是一接口函数,进作任何处理;public void quitApp();//当程序退出时被调用,首先停止系统时钟,然后停止HTTP发送;public void onLoadEnd()public void startTimer(int i)public void stopTimer()public void OnTimer()public void onNetError(boolean flag)public void showMessage(String s, String s1, CommandListener commandlistener, Command command, Command command1)public void playAlert()public Displayable getCurrent()public void showAlert(String s, String s1, Displayable displayable)public void showHelpForm()public void commandAction(Command command, Displayable displayable)public void receiveHttpResponse(String s)public void handleHttpError(String s)public void itemStateChanged(Item item)2、MD5算法类:MD5.java此文件中定义了一个MD5类,该类实现对一个字符串进行MD5加密,提供如下公共变量和方法:公共变量:public String digestHexStr; //此变量中存放了将输入串进行MD5运算后的128位MD5码的ASCII码。

实现QQ互联一键登录代码教程

实现QQ互联一键登录代码教程

实现QQ互联一键登录代码教程实现QQ互联一键登录代码教程如何用tp5.0实现QQ互联一键登录代码教程,下面是由店铺为大家整理的实现QQ互联一键登录代码教程,喜欢的可以收藏一下!了解更多详情资讯,请关注店铺!第一步:创建模板文件如:login_index.html<script type="text/javascript" src="/qzone/openapi/qc_loader.js" data-appid="填写QQ互联ID" data-redirecturi="填写域名回调地址" charset="utf-8"></script><script type="text/javascript">e(['layer'] function(){var layer = yer$ = layui.jquery;varis_login = QC.Login.check();if(is_login){var access_token = '';var openid = '';QC.Login.getMe(function(openId accessToken){access_token = accessToken;openid = openId;});var paras = {oauth_consumer_key:'填写QQ互联ID'access_token:access_tokenopenid:openid};QC.api('get_user_info' paras).success(function(s){//成功回调,通过s.data获取OpenAPI的返回数据varparam={openid:openidusername:s.data.nicknameuserhead:s.data.figur eurl_qq_2sex:s.data.gender};$.post('{:url("index/login/loginqq")}'paramfunction(res){if(res.code == 200){QC.Login.signOut()//注销qq登陆layer.msg(res.msg {icon: 1 anim: 6 time: 1000});var index = yer.getframeIndex(); //先得到当前iframe层的.索引yer.close(index); //再执行关闭}else{layer.msg(res.msg {icon: 2 anim: 6 time: 1000});}});//alert("获取用户信息成功!当前用户昵称为:"+s.data.nickname);});}else{self.location.href='https:///oauth2.0/authorize client_id=填写QQ互联ID&response_type=token&scope=all&redirect_uri='+encodeUR IComponent(self.location.href);}});</script>第一步:创建控制器文件如:loginqqpublic function loginqq(){$member = new MemberModel();if (request()->isPost()) {$data = input('post.');$user = $admin->where('openid' $data['openid'])->find(); if ($user) {//这里填写你需要写入的数据库$admin->edit($data);} else {//这里填写你需要写入的数据库$admin->add($data);}return json(array('code' => 200 'msg' => '登录成功'));}}【实现QQ互联一键登录代码教程】。

c#qq登录演示代码

c#qq登录演示代码

using System;using System.Collections.Generic;using ponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using ;using System.IO;using System.Security.Cryptography;using System.Text.RegularExpressions;using System.Collections;namespace webqq{public partial class Form1 : Form{public Form1(){InitializeComponent();}private void Form1_Load(object sender, EventArgs e){}public String host = ""; public String shost ="";private Random rd = new Random();private String get = "get";private CookieContainer cookies = new CookieContainer();private String refer = "/proxy.html?v=20110331002&callback=2";private String userAgent = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET CLR 1.1.4322; .NET4.0C; .NET4.0E)";private String accept = "*/*";private String contentType = "application/x-www-form-urlencoded; charset=UTF-8";private String verifyCode = "";private String hex16 = "";private String ptwebqq = "";private String psessionid = "";private String vfwebqq = "";private String skey = "";private String clientid =new Random().Next(100000000)+"";//默认需要输入验证码private Boolean isVerify = false;private void txt_pass_Click(object sender, EventArgs e){}private String getHtml(String url,String method,String data){Uri uri = new Uri(url);HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri); erAgent = erAgent;request.Accept = this.accept;request.ContentType = this.contentType;request.Method = method;request.Referer = this.refer;request.CookieContainer = this.cookies;if (method.Equals("post")){byte[] byteRequest = Encoding.Default.GetBytes(data);Stream rs = request.GetRequestStream();rs.Write(byteRequest, 0, byteRequest.Length);rs.Close();}HttpWebResponse response = (HttpWebResponse)request.GetResponse(); cookies.Add(response.Cookies);Stream resultStream = response.GetResponseStream();StreamReader sr = new StreamReader(resultStream, Encoding.UTF8);string html = sr.ReadToEnd();sr.Close();resultStream.Close();request.Abort();response.Close();return html;}private Stream getStream(String url, String method){Uri uri = new Uri(url);HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri); erAgent = erAgent;request.Accept = this.accept;request.ContentType = this.contentType;request.Method = method;request.Referer = this.refer;request.CookieContainer = this.cookies;HttpWebResponse response = (HttpWebResponse)request.GetResponse();foreach (Cookie cookie in response.Cookies){cookies.Add(cookie);}Stream s = response.GetResponseStream();return s;}private void btn_login_Click(object sender, EventArgs e){}///<summary>///你懂的///</summary>///<param name="buffer">你懂的</param>///<returns></returns>public static string binl2hex(byte[] buffer){StringBuilder builder = new StringBuilder();for (int i = 0; i < buffer.Length; i++){builder.Append(buffer[i].ToString("x2"));}return builder.ToString();}///<summary>///你懂的///</summary>///<param name="input">你懂的</param>///<returns></returns>public static string md5(string input){byte[] buffer =MD5.Create().ComputeHash(Encoding.GetEncoding("ISO-8859-1").GetBytes(input));return binl2hex(buffer);}///<summary>///你懂的///</summary>///<param name="passWord">QQ密码</param>///<returns></returns>public static string hexchar2bin(string passWord){StringBuilder builder = new StringBuilder();for (int i = 0; i < passWord.Length; i = i + 2){try{builder.Append(Convert.ToChar(Convert.ToInt32(passWord.Substring(i, 2), 16)));}catch (Exception e){MessageBox.Show(e.ToString());}}return builder.ToString();}///<summary>///获取最新空间加密的方法///</summary>///<param name="qq">/check?uin={0}&appid=15000101&r={1} 返回的第三个参数</param>///<param name="password">QQ密码</param>///<param name="verifycode">验证码</param>///<returns></returns>public static string GetPassword(string qq, string password, string verifycode){String P = hexchar2bin(md5(password));//String U = md5(P + hexchar2bin(qq.Replace("\\x", ""))).ToUpper();String U = md5(P + hexchar2bin(qq)).ToUpper();String V = md5(U + verifycode.ToUpper()).ToUpper();return V;}private void txt_pass_TextChanged(object sender, EventArgs e){}private void txt_pass_Click_1(object sender, EventArgs e){//String qq = this.txt_qq.Text.Trim();//String url = "/check?appid=1003903&uin=" + qq + "&r=" + rd.NextDouble();string url ="/check?uin="+qq+"&appid=1003903&r=0.5058025715431";String result = getHtml(url, get, null);if (result.IndexOf("!") < 0){//需要验证图片String verifyUrl = "/getimage?aid=1003903&uin=" + qq + "&r=" + rd.NextDouble();Stream img = getStream(verifyUrl, get);Image codeImage = Image.FromStream(img);this.picbox_code.Image = codeImage;isVerify = true;}else{this.verifyCode = result.Substring(result.IndexOf("!"), 4);this.hex16 = result.Substring(result.IndexOf("\\"), 32);this.hex16 = this.hex16.Replace("\\x","");}}private void button1_Click(object sender, EventArgs e){//登陆String qq = this.txt_qq.Text.Trim();if (qq.Equals("")){MessageBox.Show("请输入QQ号码!");return;}String pass = this.txt_pass.Text.Trim();if (pass.Equals("")){MessageBox.Show("请输入QQ密码!");return;}if (isVerify){verifyCode = this.txt_code.Text.Trim();if (verifyCode.Equals("")){MessageBox.Show("请输入验证码!");}}String md5pass = GetPassword(hex16, pass, verifyCode);String loginUrl = "/login?u=" + qq + "&p=" + md5pass +"&verifycode=" + verifyCode +"&webqq_type=Callme&remember_uin=1&login2qq=1&aid=1003903&u1=http%3A%2F%%2Floginprox y.html%3Flogin2qq%3D1%26webqq_type%3D10&h=1&ptredirect=0&ptlang=2052&from_ui=1&pttype=1&dumy=&fp =loginerroralert&action=1-24-89939&mibao_css=m_webqq&g=1";//登陆String loginResult = getHtml(loginUrl, "get", null);MessageBox.Show(loginResult);int isLogin = loginResult.IndexOf("登录成功");if (isLogin > 0){// MessageBox.Show("登录成功");/*String cks = cookies.GetCookieHeader(new Uri(loginUrl));this.ptwebqq = PassUtil.getPtWebqq(cks, "ptwebqq=");this.skey = PassUtil.getMidStr(cks, "skey=");String channelLoginUrl = this.host + "/channel/login2";String postData =String.Format("r=%7B%22status%22%3A%22online%22%2C%22ptwebqq%22%3A%22{0}%22%2C%22passwd_sig%22%3 A%22%22%2C%22clientid%22%3A%22{1}%22%2C%22psessionid%22%3Anull%7D&clientid={2}&psessionid=null", this.ptwebqq, this.clientid, this.clientid);String login3 = getHtml(channelLoginUrl, "post", postData);//得到vfwebqq和psessionidthis.vfwebqq = PassUtil.getVfWebqqOrPsessionid(login3, "vfwebqq", "psessionid"); this.psessionid = PassUtil.getVfWebqqOrPsessionid(login3, "psessionid","user_state");**//打开主窗体*/}else{MessageBox.Show("登陆失败");}}private void label1_Click(object sender, EventArgs e) {}}}。

qq登录界面(简单代码,有点厄余)

qq登录界面(简单代码,有点厄余)

qq登录界⾯(简单代码,有点厄余)l version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:background="@drawable/b"android:orientation="vertical"><!-- /*垂直分布*/--><!-- 头--><ImageViewandroid:id="@+id/iv"android:layout_width="100dp"android:layout_height="100dp"android:layout_centerHorizontal="true"android:layout_marginTop="40dp"android:background="@drawable/a" /><LinearLayoutandroid:id="@+id/l_number"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_below="@id/iv"android:layout_centerHorizontal="true"android:layout_marginBottom="5dp"android:layout_marginLeft="10dp"android:layout_marginRight="10dp"android:layout_marginTop="15dp"android:background="@drawable/c"><TextViewandroid:id="@+id/tv_number"android:layout_width="wrap_content"android:layout_height="wrap_content"android:padding="10dp"android:text="QQ号/邮箱/⼿机号:"android:textColor="#000"android:textSize="20sp"/><EditTextandroid:id="@+id/et_number"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginLeft="5dp"android:background="@null"android:padding="10dp"/></LinearLayout><LinearLayoutandroid:id="@+id/l_password"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_below="@id/l_number"android:layout_centerHorizontal="true"android:layout_marginLeft="10dp"android:layout_marginRight="10dp"android:background="@drawable/c"><TextViewandroid:id="@+id/tv_password"android:layout_width="wrap_content"android:layout_height="wrap_content"android:padding="10dp"android:text="密码:"android:textColor="#000"android:textSize="20sp"/><EditTextandroid:id="@+id/et_password"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginLeft="5dp"android:layout_toRightOf="@id/tv_password"android:background="@null"android:inputType="textPassword"android:padding="10dp" /></LinearLayout><Buttonandroid:id="@+id/btn_login"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_below="@id/l_password"android:layout_marginLeft="10dp"android:layout_marginTop="50dp"android:layout_marginRight="10dp"android:text="登录"android:textColor="#ffffff"android:textSize="20sp"android:background="@drawable/d"/><Buttonandroid:id="@+id/btu_loginb"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_below="@id/btn_login"android:layout_alignLeft="@id/btn_login"android:background="@drawable/e"android:padding="10dp"android:text="忘记密码"android:textColor="#0000CD"android:textSize="15sp"/><Buttonandroid:id="@+id/btu_loginc"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_below="@id/btn_login"android:layout_alignRight="@id/btn_login"android:background="@drawable/e"android:padding="10dp"android:text="注册账号"android:textColor="#0000CD"android:textSize="15sp" /><TextViewandroid:id="@+id/btu_logind"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_centerHorizontal="true"android:layout_alignParentBottom="true"android:background="@drawable/e"android:padding="10dp"android:text="登录即代表阅读和同意服务条款"android:textColor="#000000"android:textSize="12sp"/></RelativeLayout>resc.xml<?xml version="1.0" encoding="utf-8"?><shape xmlns:android="/apk/res/android"> <!-- 设置透明背景⾊ --><solid android:color="#00000000" /><!-- 设置⼀个⿊⾊边框 --><strokeandroid:width="2px"android:color="#000000" /><!-- 设置四个圆⾓的半径 --><cornersandroid:bottomLeftRadius="40px"android:bottomRightRadius="40px"android:topLeftRadius="40px"android:topRightRadius="40px" /><!-- 设置⼀下边距,让空间⼤⼀点 --><paddingandroid:bottom="5dp"android:left="5dp"android:right="5dp"android:top="5dp" /></shape>d.xml<?xml version="1.0" encoding="utf-8"?><shape xmlns:android="/apk/res/android"> <!-- 设置透明背景⾊ --><solid android:color="#ffffff" /><!-- 设置⼀个⿊⾊边框 --><strokeandroid:width="2px"android:color="#000000" /><!-- 设置四个圆⾓的半径 --><cornersandroid:bottomLeftRadius="40px"android:bottomRightRadius="40px"android:topLeftRadius="40px"android:topRightRadius="40px" /><!-- 设置⼀下边距,让空间⼤⼀点 --><paddingandroid:bottom="5dp"android:left="5dp"android:right="5dp"android:top="5dp" /></shape>e.xml<?xml version="1.0" encoding="utf-8"?><shape xmlns:android="/apk/res/android"> <!-- 设置透明背景⾊ --><solid android:color="#00000000" /><!-- 设置四个圆⾓的半径 --><cornersandroid:bottomLeftRadius="40px"android:bottomRightRadius="40px"android:topLeftRadius="40px"android:topRightRadius="40px" /><!-- 设置⼀下边距,让空间⼤⼀点 --><paddingandroid:bottom="5dp"android:left="5dp"android:right="5dp"android:top="5dp" /></shape>。

Delphi制作QQ自动登录器源码

Delphi制作QQ自动登录器源码
17 except
18 end;
19 Break;
20 end;
21 ClickTimes:=ClickTimes+1;
22 end;
23 if QQWnds.QStatusWnd=0 then begin //如果一直没有捕捉到设置状态窗体,顺序则自动退出
Delphi制作QQ自动登录器源码
以TM2009为例,检查了一下,未登录之前一个窗体,上边两个控件,登录以后,窗体捕获到一个控件,根据这个,首先找到QQ登录框,输入用户名,密码的位置,获取窗体句柄的具体代码如下:
这里先定义了一个record类型,
1 TQQWnd= record
2 QQWnd,QStatusWnd: HWND; //QQ窗口句柄,QQ弹出登录状态句柄
21 GetWindowTextAQQWnd.QQWnd, @WinTitle, SizeOfWinTitl;
22 if WinTitle<>'TM2009' then Continue;
23 end;
24 end;
25 end;
26
13 A QQWnd.QQPassWnd:= FindWindowExAQQWnd.QQWnd, 0, 'Edit', nil;
14 if AQQWnd.QQNumWnd<> 0and AQQWnd.QQPassWnd<> 0 then begin
15 Result:= True;
24 m.SendMSG_QQ_ERR, IntToStrQQRect.Left+''+ IntToStrQQRect.Top+ ''+ In

AndroidStudio实现简单的QQ登录界面的示例代码

AndroidStudio实现简单的QQ登录界面的示例代码

AndroidStudio实现简单的QQ登录界⾯的⽰例代码⼀、项⽬概述QQ是我们⽇常⽣活使⽤最多的软件之⼀,包含登录界⾯和进⼊后的聊天界⾯、好友列表界⾯和空间动态界⾯等。

登录界⾯的制作⽐较简单,主要考验布局的使⽤,是实现QQ项⽬的第⼀步。

现在APP开发的⾸要⼯作都是实现登录页⾯,所以学会了QQ登录界⾯对以后的软件开发有着很重要的作⽤。

⼆、开发环境三、详细设计1、头像设计⾸先在layout⽂件⾥⾯选择了RelativeLayout(相对布局)作为整个页⾯的布局。

在顶端放置了⼀个ImageView控件,宽度和⾼度设置的都是70dp,⽔平居中设置为true。

然后使头像在整个页⾯下调⼀点,不要紧贴着顶端,所以layout_marginTop设置为40dp。

最后选择drawable⽂件夹中的head⽂件作为头像。

代码如下:<ImageViewandroid:id='@+id/iv'android:layout_width="70dp"android:layout_height="70dp"android:layout_centerHorizontal="true"android:layout_marginTop="40dp"android:background="@drawable/head"/>2、账号输⼊框利⽤LinearLayout(线性布局)作为账号输⼊框的外层布局,orientation设置的为⽔平排列。

放置了⼀个TextView控件,宽度和⾼度设置的wrap_content,即适应内容⼤⼩,显⽰⽂本“账号”。

紧接着放置⼀个EditText控件,⽤于输⼊账号内容,使⽤layout_toRightOf属性定位于账号的右侧。

<LinearLayoutandroid:id="@+id/number_11"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_below="@id/iv"android:layout_centerVertical="true"android:layout_marginBottom="5dp"android:layout_marginLeft="10dp"android:layout_marginRight="10dp"android:layout_marginTop="15dp"android:background="#ffffff"android:orientation="horizontal"><TextViewandroid:id="@+id/tv_number"android:layout_width="wrap_content"android:layout_height="wrap_content"android:padding="10dp"android:text="账号:"android:textColor="#000"android:textSize="20sp" /><EditTextandroid:id="@+id/et_number"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_toRightOf="@id/tv_number"android:layout_marginLeft="5dp"android:background="@null"android:inputType="text"android:padding="10dp" /></LinearLayout>3、密码输⼊框最外层依旧是LinearLayout(线性布局),整体放置在上⼀个LinearLayout的下⾯,控件排列依然为horizontal(⽔平)。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

目录1 前言 ........................................................................................................................... 页码1.1 问题提出 ..................................................... 页码1.2 研究意义 ..................................................... 页码2 系统需求分析 ............................................................................................................. 页码2.1 系统功能分析........................................................................................................ 页码2.2 系统功能模块设计................................................................................................ 页码3 数据库的概念结构设计............................................ 页码3.1数据抽象...................................................... 页码3.2设计全局概念模式.............................................. 页码4 数据库的逻辑设计................................................. 页码4.1形成初始的关系模式............................................ 页码4.2关系模式的规范化处理.......................................... 页码5系统的实现与调试 ................................................. 页码6 总结............................................................... 页码参考文献 .......................................................................................................................... 页码1 前言1.1 问题提出随着嵌入式的发展,近年来,嵌入式在社会发展中占据着越来越重要的地位。

我们日常生活中的手机,电子手表,MP3,医疗设备,汽车导航等等,到处可见嵌入式相关的东西。

以前很多手动式的操作由嵌入式设备的代替后运行效率和方便程度都有了明显的提高。

目前嵌入式相关的技术已经成为未来世界发展的主流方向。

与此同时,网络的发展更是火遍了全球,几乎80%以上的人都会上网。

可以说已经成为人们的生活的一部分。

由以上可想而知,嵌入式联网功能定会是未来的一种趋势。

TCP/IP(通常它是指传输控制协议/网际协议,Transmission Control Protocol / Internet Protocol)是发展至今最成功的通信协议,它被用于当今所构筑的最大的开放式网络系统Internet之上就是其成功的明证。

Internet最初的设计是为了满足美国国防的需要,具体来讲就是使美国政府即使在遭受核打击时也能保证通信不间断,TCP/IP就是用于这个目的的。

今天,Internet已经发展得更加商业化,更加面向消费者,尽管基本目的发生了改变,但其最初的所有质量标准(也就是开放式、抗毁性和可靠性)依然是必需的。

这些特性包括可靠传输数据、自动检测和避免网络发生错误的能力。

更重要的就是TCP/IP是一个开放式通信协议,开放性意味着在任何组合间,不管这些设备的物理特征有多大差异,都可以进行通信。

1.2 研究意义目前,嵌入式设备与TCP/IP协议的结合已经成为了必然的趋势。

但是嵌入式设备的容量小,处理速度慢等原因。

不可能会使用像普通PC机那样一样的TCP/IP协议支持系统。

所以要实现适合嵌入式设备的TCP/IP协议,是一个首要的问题。

这就要考虑在原有的协议的基础上对TCP/IP协议进行裁剪,使之留下有用的功能更适合于我们的嵌入式系统。

目前有部分的嵌入式设备上已经实现了相应的TCP/IP协议。

不过对于ARM 这种比较流行的芯片来说针对于部分型号芯片的TCP/IP协议的实现并没有实现。

以LPC2124芯片为例,市面上很少会出现此类型号的匹配产品。

为了让这些型号的芯片也能够使用上功能强大的TCP/IP协议。

这就需要我们开发出具体针对这些芯片的TCP/IP 协议。

为了使做出的协议更实用,成本更低。

配合免费稳定的UCOSII等操作系统也是必不可少的。

22.1 12345.图2-1 数据流图系统使用数据字典如表2-1所示: 1.2.2.2修改密码:用户登陆之后可以通过旧的密码修改新的密码。

图2-2 系统功能模块图3 数据库的概念结构设计概念结构设计是将分析得到的用户需求抽象为信息结构(即概念模型)的过程,它是整个数据库设计的关键。

为了把用户的数据要求清晰明确的表达出来,通常要建立一种面向问题的数据模型,按照用户的观点来对数据和信息建模。

最常用的概念性数据模型就是ER 模型。

以下是本系统涉及到数据抽象后的E-R 图。

3.1 数据抽象图3-2登陆查询局部E-R图3.2 设计全局概念模式各个局部视图即分E-R图建立好后,还需要对它们进行合并,集成为一个整体的概念数据结构即全局E-R图。

(1)合并分E-R图,生成初步E-R图合并分E-R图时并不能简单地将各个分E-R图画到一起,而是必须着力消除各个分E-R图中不一致的地方,以形成一个能为全系统中所有用户共同理解和接受的统一概念模型。

合理消除各分E-R图的冲突,合并分E-R图的主要工作与关键所在。

E-R图中的冲突有三种:属性冲突,命名冲突结构冲突。

①属性冲突属性域冲突:属性值的类型、取值范围或取值集合不同。

属性取值单位冲突。

②命名冲突命名不一致可能发生在实体名、属性名或联系名之间,其中属性的命名冲突更为常见。

一般表现为同名异义或异名同义。

同名异义:不同意义的对象在不同的局部应用中具有相同的名字。

异名同义(一义多名):同一意义的对象在不同的局部应用中具有不同的名字。

命名冲突可能发生在属性级、实体级、联系级上。

其中属性的命名冲突更为常见。

解决命名冲突的方法是通常用讨论、协商等行政手段加以解决。

③结构冲突(有三类结构冲突)同一对象在不同应用中具有不同的抽象解决方法:通常是把属性变换为实体或把实体变换为属性,使同一对象具有相同的抽象。

变换时要遵循两个准则。

同一实体在不同局部视图中所包含的属性不完全相同,或者属性的排列次序不完全相(2E-R模型,如下图3-3所示图3-3 优化后的全局E-R图4 数据库的逻辑设计概念结构是各种数据模型的共同基础。

为了能够用某一DBMS实现用户需求,还必须将概念结构进一步转化为相应的数据模型,这正是数据库逻辑结构设计所要完成的任务。

一般的逻辑结构设计分为以下三个步骤:1.将概念结构转化为一般的关系、网状、层次模型。

2.将转化来的关系、网状、层次模型向特定DBMS支持下的数据模型转换。

3.对数据模型进行优化。

4.1 形成初始的关系模式(1)一个实体转换为一个关系模式。

关系的属性:实体的属性;关系的键:实体的键(2)一个m:n联系转换为一个关系模式。

关系的属性:与该联系相连的各实体的键以及联系本身的属性。

关系的键:各实体键的组合。

(3)一个1:n联系可以转换为一个关系模式关系的属性:与该联系相连的各实体的码以及联系本身的属性关系的码:n端实体的键(4)一个1:1联系可以转换为一个独立的关系模式。

关系的属性:与该联系相连的各实体的键以及联系本身的属性关系的候选码:每个实体的码均是该关系的候选码将图3-3中四个实体分别转换为关系模式(带下划线的为主键):QQ登陆(账号,密码,邮箱)信息查询(账号,信息)修改密码(账号,密码,邮箱)4.2关系模式的规范化处理关系模型的优化通常是以规范化理论为基础。

方法为:1、确定数据依赖,按需求分析阶段所得到的语义,分别写出每个关系模式内部各属性之间的数据依赖以及不同关系模式属性之间数据依赖。

2、对于各个关系模式之间的数据依赖进行极小化处理,消除冗余的联系。

3、按照数据依赖的理论对关系模式逐一进行分析,考查是否存在部分函数依赖、传递函数依赖、多值依赖等,确定各关系模式分别属于第几范式。

5 系统的实现与调试用SQL Server 2000数据库管理系统建立数据库结构,加载数据,实现各种查询,根据系统功能建立视图等对象,并能对数据库做简单的维护操作。

该模块是系统的基础模块,账号登陆界面。

可以在该页面填写账号和密码进行登陆。

图 5-1 账号登陆页面登陆后可以进行信息修改。

图 5-2 修改信息页面登陆后也可以进行密码修改。

图 5-3 密码修改界面修改新密码后需要进行邮箱验证。

图 5-4 邮箱验证界面代码<%@ page contentType="text/html;charset=GB2312" %><%@ page import="tom.jiafei.A" %><jsp:useBean id="A" class="tom.jiafei.A" scope="request"/><HTML><BODY bgcolor=yellow><FONT Size=3><%String str1=request.getParameter("secret");String str2=request.getParameter("resecret");String str3=request.getParameter("name");String str4=request.getParameter("age");String str5=request.getParameter("number");if(str1.length()==0||str2.length()==0||str3.length()==0||str4.length()= =0 ){response.sendRedirect("regsiter.jsp");}else{ A.setNumber(str5);A.setSecret(str1);A.setName(str3);A.setAge(str4);int a=A.addMessage();if(a>0){ out.println("注册成功"+"<BR>");}}%><A href="login.jsp">返回登录界面</A></BODY></HTML><%@ page contentType="text/html;charset=GB2312" %><HTML><BODY bgcolor=yellow><%@ page import="tom.jiafei.C" %><jsp:useBean id="C" class="tom.jiafei.C" scope="request"/><%String str1=request.getParameter("secret");String str2=request.getParameter("newsecret");String str3=request.getParameter("renewsecret");if(str1.length()==0||str2.length()==0||str3.length()==0){response.sendRedirect("update.jsp");}else{C.setSecret(str1);C.setNewsecret(str2);int n=C.update();if(n>0){out.println("修改成功"+"<BR>");}elseout.println("密码错误,请重新输入"+"<BR>");}%><A href="login.jsp">返回登录界面</A><BR><A href="update.jsp">返回密码修改界面</A></BODY></HTML>3. ReadFiles.Java<%@ page contentType="text/html;charset=GB2312" %><%@ page import="tom.jiafei.B" %><%@ page import= "java.sql.*" %><jsp:useBean id="B" class="tom.jiafei.B" scope="request"/> <HTML><BODY bgcolor=yellow><FONT Size=3><%String str1=request.getParameter("number");String str2=request.getParameter("password");if(str1.length()==0||str2.length()==0){response.sendRedirect("login.jsp");}else{ B.setNum(str1);B.setSec(str2);String b=B.queryResult();if(b!=null){response.sendRedirect("main.jsp");}elseout.println("请输入正确的帐号和密码"+"<BR>");}%><A href="login.jsp">返回登录界面</A> </BODY></HTML>。

相关文档
最新文档