/// <summary> /// 短信验证码是否正确 /// </summary> /// <param name="phone">手机号码</param> /// <param name="code">短信验证码</param> /// <returns></returns> public static bool CheckAuthCode(String phone, String code) { return(true); var nonce = OSecurity.GetRandomString(16); var curTime = OSecurity.DateTimeToTimeStamp(DateTime.Now).ToString(); var sha1 = OSecurity.SHA1(appSecret + nonce + curTime); var errcode = ORequest.RequestPost("https://api.netease.im/sms/verifycode.action", "&phone=" + phone, "code", new WebHeaderCollection { { "AppKey", appKey }, { "Nonce", nonce }, { "CurTime", curTime }, { "CheckSum", sha1 } }); if (errcode == "200") { return(true); } return(false); }
protected void Page_Load(object sender, EventArgs e) { // 不是微信内置浏览器 if (!WXManage.IsWXBrowser(Request)) { Response.Redirect("/RequireWX.aspx?url=" + Request.Url); return; } // 未登录,作为报名页面 if (Session["phone"] == null || Session["iden"] == null) { signBtn1.InnerText = "立即报名"; signBtn2.InnerText = "立即报名"; } // 普通会员、管理员可查看 if (Session["iden"] != null && Session["iden"].ToString() != "1" && Session["iden"].ToString() != "5") { Response.Redirect("/UserIndex.aspx"); return; } // 没有参数 if (!Request.QueryString.AllKeys.Contains("aid")) { Response.Redirect("/Activity.aspx"); return; } // 活动ID string aid = Request.QueryString["aid"].ToString(); // 获取活动 var activity = DataBase.Activity.Get(new Objects.Activity() { id = aid }); activity_name.InnerText = activity_name.InnerText.Replace("#title#", activity.title); end_time.InnerText = end_time.InnerText.Replace("#end-time#", activity.timeEnd.ToString("yyyy-MM-dd HH:mm:ss")); js_content.InnerHtml = js_content.InnerHtml.Replace("#content#", activity.content); Title = activity.brief; /* * appId: appId * timestamp: timestamp * nonceStr: nonceStr * signature: signature */ var timestamp = OSecurity.DateTimeToTimeStamp(DateTime.Now); String script = "var appId = '" + WXManage.appID + "';"; script += "var timestamp = '" + timestamp.ToString() + "';"; script += "var nonceStr = 'chenyanhong';"; script += "var signature = '" + WXManage.WXJSSign("chenyanhong", timestamp, Request.Url.ToString().Split('#')[0]) + "';"; script += "var imgUrl = '" + WXManage.QRCode(Request.Url.ToString() + "&uid=" + Session["phone"]) + "';"; if (Session["phone"] != null) { script += "var uid = '" + Session["phone"].ToString() + "';"; } ScriptManager.RegisterClientScriptBlock(this, GetType(), "wxvar", script, true); }
/// <summary> /// 后去jsapi_ticket,每次调用接口都调用此函数,不要记录 /// </summary> /// <returns></returns> public static string GetJsapiTicket() { if (access_token == String.Empty || OSecurity.DateTimeToTimeStamp(DateTime.Now) > timeStamp) { RefreshAccessToken(); } return(jsapi_ticket); }
/// <summary> /// 获取access_token,每次调用接口都调用此函数,不要记录 /// </summary> /// <returns></returns> public static String GetAccessToken() { if (access_token == String.Empty || OSecurity.DateTimeToTimeStamp(DateTime.Now) > timeStamp) { return(RefreshAccessToken()); } return(access_token); }
public static string WXJSSign(string nonce, Int64 timestamp, string url) { string str = "jsapi_ticket=" + GetJsapiTicket() + "&noncestr=" + nonce + "×tamp=" + timestamp.ToString() + "&url=" + url; str = OSecurity.SHA1(str); return(str); }
protected void Page_Load(object sender, EventArgs e) { // 不是微信内置浏览器 if (!WXManage.IsWXBrowser(Request)) { Response.Redirect("/RequireWX.aspx?url=" + Request.Url); return; } if (IsPostBack) { // 手机 var phone = Request.Form["tel"]; // 短信验证码 var code = Request.Form["code"]; // 身份 var iden = Int32.Parse(Request.Form["iden"]); // 格式检查 if (!OSecurity.ValidPhone(phone) || // 手机号 !Regex.IsMatch(code, "^\\d{4}$") || // 验证码4位数字 iden < 1 || iden > 5 // 身份在[1,5] ) { return; } // 验证码检查 if (!AuthCode.CheckAuthCode(phone, code)) { ScriptManager.RegisterStartupScript(this, GetType(), "codeError", "alterError($('input[name=code]')[0]);", true); return; } // 普通会员-业务员-施工队-管理员 if (iden == 1 || iden == 2 || iden == 4 || iden == 5) { if (DataBase.User.Exits(new Objects.User() { phone = phone, identity = iden.ToString() })) { Session["phone"] = phone; Session["iden"] = iden; Response.Redirect("/UserIndex.aspx"); } } } }
/// <summary> /// 刷新access_token /// </summary> /// <returns></returns> public static string RefreshAccessToken() { string url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential"; var jsonObject = ORequest.RequestGet(url, new System.Collections.Generic.Dictionary <string, string> { { "appid", appID }, { "secret", appsecret } }); // 获取access_token,计算过期时间 access_token = jsonObject["access_token"].ToString(); timeStamp = OSecurity.DateTimeToTimeStamp(DateTime.Now) + Convert.ToInt64(jsonObject["expires_in"].ToString()); RefreshJsapiTicket(); return(access_token); }
protected void vcodeBtn_Click(object sender, EventArgs e) { if (OSecurity.ValidPhone(tel.Value)) { // 发送间隔校验 if (Session["vcodeSend"] != null) { if (OSecurity.DateTimeToTimeStamp(DateTime.Now) - Int64.Parse(Session["vcodeSend"].ToString()) < 60) { return; } } Session["vcodeSend"] = OSecurity.DateTimeToTimeStamp(DateTime.Now); AuthCode.SendAuthCode(tel.Value); ScriptManager.RegisterStartupScript(this, GetType(), "success", "success(1, '验证码已发送', false);", true); ScriptManager.RegisterStartupScript(this, GetType(), "successcd", "startCountDown();", true); } else { ScriptManager.RegisterStartupScript(this, GetType(), "phoneError", "alterError($('input[name=tel]')[0]);", true); } }
protected void newActivity_Click(Object sender, EventArgs e) { // 新建活动,标题初始化为时间 + 一随机数 var activity = new Objects.Activity() { timeStart = DateTime.Now, timeEnd = DateTime.Now, title = OSecurity.DateTimeToTimeStamp(DateTime.Now).ToString() + new Random().Next(0, 100).ToString(), content = "", brief = "", template = int.Parse(DataBase.Template.Gets()[0].id), templateAddition = "" }; // 新建 if (!DataBase.Activity.Add(activity)) { ScriptManager.RegisterClientScriptBlock(this, GetType(), "error", "alert('新建失败,服务器错误')", true); return; } // 获取ID,转到编辑界面 activity = DataBase.Activity.GetByTitle(activity); Response.Redirect("/ActivityEditor.aspx?aid=" + activity.id); }
protected void Page_Load(object sender, EventArgs e) { // 不是微信内置浏览器 if (!WXManage.IsWXBrowser(Request)) { Response.Redirect("/RequireWX.aspx?url=" + Request.Url); return; } if (Session["phone"] == null || Session["iden"].ToString() != "5") { Response.Redirect("/UserIndex.aspx"); return; } if (Request.QueryString["aid"] == null) { Response.Redirect("/Activity.aspx"); return; } // 保存 if (IsPostBack) { var id = Request.QueryString["aid"]; DateTime timeStart = DateTime.Parse(Request.Form["timeStart"]); DateTime timeEnd = DateTime.Parse(Request.Form["timeEnd"]); var title = Request.Form["title"]; var content = Request.Unvalidated["htmlInput"]; int template = int.Parse(Request.Form["templateSelect"]); var brief = Request.Form["brief"]; bool valid = checkValid.Checked; var imgSrc = ""; var templateAddition = Request.Form["templateAdditionInput"]; if (title == "" || content == "" || brief == "" || templateAddition == "" || Request.Files.Count > 1) { return; } if (Request.Files.Count == 1) { var imgName = Request.Files[0].FileName; string path = "/WXShare/uploads/" + DateTime.Now.ToString("yyyyMMdd"); if (!Directory.Exists("/WXShare/uploads")) { Directory.CreateDirectory("/WXShare/uploads"); } if (!Directory.Exists(path)) { Directory.CreateDirectory(path); } path += "/" + OSecurity.DateTimeToTimeStamp(DateTime.Now) + "." + imgName.Substring(imgName.LastIndexOf('.') + 1); Request.Files[0].SaveAs(path); imgSrc = path.Substring(8); } Objects.Activity modActivity = new Objects.Activity() { id = id, timeStart = timeStart, timeEnd = timeEnd, title = title, content = content, template = template, brief = brief, valid = valid, imgSrc = imgSrc, templateAddition = templateAddition }; if (!DataBase.Activity.Modify(modActivity)) { ScriptManager.RegisterClientScriptBlock(this, GetType(), "saveFailed", "alert('保存失败');", true); return; } Response.Redirect(Request.Url.ToString()); } // 显示 var activityID = Request.QueryString["aid"]; var activity = DataBase.Activity.Get(new Objects.Activity() { id = activityID }); timeStart.Value = activity.timeStart.ToString("yyyy-MM-ddTHH:mm:ss"); timeEnd.Value = activity.timeEnd.ToString("yyyy-MM-ddTHH:mm:ss"); title.Value = activity.title; textarea.InnerHtml = activity.content; var templates = DataBase.Template.Gets(); templateSelect.Items.Clear(); foreach (var template in templates) { templateSelect.Items.Add(new ListItem(template.name, template.id)); if (template.id == activity.id) { templateSelect.SelectedIndex = templateSelect.Items.Count - 1; } } templateAdditionInput.Value = activity.templateAddition; brief.Value = activity.brief; checkValid.Checked = activity.valid; if (activity.imgSrc != "") { ScriptManager.RegisterStartupScript(this, GetType(), "showImgSrc", "showImgSrc('//" + Request.Url.Host + "" + activity.imgSrc + "');", true); } }
public void ProcessRequest(HttpContext context) { context.Response.ContentType = "text/json"; var result = new ApiResult(); if (context.Request.HttpMethod != "POST") { result.code = 0x01; result.message = "需要使用POST请求"; context.Response.Write(JsonConvert.SerializeObject(result)); return; } if (context.Session["uid"] == null) { result.code = 0x02; result.message = "权限不足"; context.Response.Write(JsonConvert.SerializeObject(result)); return; } var uid = context.Session["uid"].ToString(); // 删除所有过期的邀请码 var sql = "delete from codes where unix_timestamp(startTime) + 15*60 <= unix_timestamp(now());"; MySQLHelper.ExecuteNonQuery(sql); // 查询该用户是否有邀请码 sql = "select count(*) from codes where userId = ?uid;"; var ret = int.Parse(MySQLHelper.ExecuteScalar(sql, new MySqlParameter("?uid", uid)).ToString()); var code = ""; if (ret == 0) { sql = "select allowRegister from user where id = ?uid;"; var ds = MySQLHelper.ExecuteDataSet(sql, new MySqlParameter("?uid", uid)); if (ds.Tables[0].Rows.Count == 0) { result.code = 0x03; result.message = "用户不存在"; context.Response.Write(JsonConvert.SerializeObject(result)); return; } if (ds.Tables[0].Rows[0].ItemArray[0].ToString() != "1") { result.code = 0x02; result.message = "没有生成邀请码的权限"; context.Response.Write(JsonConvert.SerializeObject(result)); return; } // 生成新的6位邀请码 code = OSecurity.GetRandomString(6); sql = "insert into codes value(?code, ?uid, now());"; var paras = new MySqlParameter[2]; paras[0] = new MySqlParameter("?code", code); paras[1] = new MySqlParameter("?uid", uid); // 插入到数据库 var insertResult = MySQLHelper.ExecuteNonQuery(sql, paras); // 失败返回空字符串 if (insertResult != 1) { code = ""; } } else { sql = "select code from codes where userId = ?uid;"; var ds = MySQLHelper.ExecuteDataSet(sql, new MySqlParameter("?uid", uid)); code = ds.Tables[0].Rows[0].ItemArray[0].ToString(); } result.message = "成功"; result.data = new ReturnStruct { code = code, userId = int.Parse(uid) }; context.Response.Write(JsonConvert.SerializeObject(result)); }
public override string ToXML() { CreateTime = OSecurity.DateTimeToTimeStamp(DateTime.Now); return(WXManage.ToXML(this)); }
public XMLObject() { CreateTime = OSecurity.DateTimeToTimeStamp(DateTime.Now); }
protected void Page_Load(object sender, EventArgs e) { // 不是微信内置浏览器 if (!WXManage.IsWXBrowser(Request)) { Response.Redirect("/RequireWX.aspx?url=" + Request.Url); return; } if (IsPostBack) { // 姓名 var name = Request.Form["name"]; // 手机 var phone = Request.Form["tel"]; // 短信验证码 var code = Request.Form["code"]; // 身份 var iden = Request.Form["iden"]; // 格式检查 if (name == "" || // 姓名不空 !OSecurity.ValidPhone(phone) || // 手机号 !Regex.IsMatch(code, "^\\d{4}$") || // 验证码4位数字 Int32.Parse(iden) < 1 || Int32.Parse(iden) > 5 // 身份在[1,5] ) { return; } // 验证码检查 if (!AuthCode.CheckAuthCode(phone, code)) { ScriptManager.RegisterStartupScript(this, GetType(), "codeError", "alterError($('input[name=code]')[0]);", true); return; } // 身份证(业务员-施工队-管理员) String IDCardYWY = null; // 身份证(经销商) String IDCardJXS; // 区县(经销商) String location; // 详细地址 String detailLocation; if (iden == "2" || iden == "4" || iden == "5") { IDCardYWY = Request.Form["idcard_ywy"]; // 身份证检查 if (!OSecurity.ValidIDCard(IDCardYWY)) { return; } } if ((iden == "1" || iden == "2" || iden == "4" || iden == "5") && DataBase.User.Add(new Objects.User() { phone = phone, name = name, identity = iden, IDCard = IDCardYWY })) { ScriptManager.RegisterStartupScript(this, GetType(), "success", "success(" + iden + ", '注册成功', true);", true); } // 经销商 else if (iden == "3") { IDCardJXS = Request.Form["idcard_jxs"]; location = Request.Form["location"]; detailLocation = Request.Form["detailLocation"]; // 不实现 } else { return; } } }
protected void Page_Load(object sender, EventArgs e) { // 不是微信内置浏览器 if (!WXManage.IsWXBrowser(Request)) { Response.Redirect("/RequireWX.aspx?url=" + Request.Url); return; } if (Request.QueryString["aid"] == null) { Response.Redirect("/Activity.aspx"); return; } if (IsPostBack) { string phone = Request.Form["tel"]; // 手机 string name = Request.Form["name"]; // 姓名 string code = Request.Form["code"]; // 验证码 string location = Request.Form["location"]; // 地址 string locationDetail = Request.Form["detailLocation"]; // 详细地址 // 格式检查 if (name == "" || // 姓名不空 !OSecurity.ValidPhone(phone) || // 手机号 !Regex.IsMatch(code, "^\\d{4}$") || // 验证码4位数字 location == "" // 详细地址为空 ) { return; } // 验证码检查 if (!AuthCode.CheckAuthCode(phone, code)) { ScriptManager.RegisterStartupScript(this, GetType(), "codeError", "alterError($('input[name=code]')[0]);", true); return; } string activityID = Request.QueryString["aid"]; string userID = Request.QueryString["uid"]; // 即手机号 if (activityID == "" || userID == "") { return; } var activity = DataBase.Activity.Get(new Objects.Activity() { id = activityID }); if (activity == null) { ScriptManager.RegisterClientScriptBlock(this, GetType(), "noaid", "alert('不存在此活动!');", true); return; } if (activity.timeEnd <= DateTime.Now) { ScriptManager.RegisterClientScriptBlock(this, GetType(), "ended", "alert('活动已结束!');", true); return; } var user = DataBase.User.Get(new Objects.User() { phone = userID, identity = "1" }); if (user == null) { ScriptManager.RegisterClientScriptBlock(this, GetType(), "nouid", "alert('不存在该推荐人!');", true); return; } if (DataBase.ActivitySign.Add(new Objects.ActivitySign() { name = name, phone = phone, location = location, locationDetail = locationDetail, activityID = activityID, shareSource = userID })) { // 发送新报名提示 var admins = DataBase.User.Gets("5"); foreach (var admin in admins) { var openid = DataBase.User.GetOpenID(admin); if (!string.IsNullOrEmpty(openid)) { WXManage.SendMessage(openid, "有一条新报名信息!"); } } Response.Redirect("/ActivitySignSuccess.aspx"); return; } } }
protected void Page_Load(object sender, EventArgs e) { // 不是微信内置浏览器 if (!WXManage.IsWXBrowser(Request)) { Response.Redirect("/RequireWX.aspx?url=" + Request.Url); return; } if (Session["phone"] != null && Session["iden"] != null) { Response.Redirect("/UserIndex.aspx"); return; } if (IsPostBack) { String phone = Request.Form["tel"]; String password = Request.Form["password"]; int iden = Int32.Parse(Request.Form["iden"]); bool reme = Request.Form["autoLogin"] == "on"; // 格式检查 if (!OSecurity.ValidPhone(phone) || // 手机号 iden < 1 || iden > 5 // 身份在[1,5] ) { return; } // 普通会员-业务员-施工队-管理员 if (iden == 1 || iden == 2 || iden == 4 || iden == 5) { if (DataBase.User.Login(new Objects.User() { phone = phone, password = password, identity = iden.ToString() })) { Session["phone"] = phone; Session["iden"] = iden; if (reme) { var telc = new HttpCookie("tel", phone); telc.Expires = DateTime.Now.AddDays(15); var pasc = new HttpCookie("__p", OSecurity.AESEncrypt(password)); pasc.Expires = DateTime.Now.AddDays(15); var idenc = new HttpCookie("ide", iden.ToString()); idenc.Expires = DateTime.Now.AddDays(15); Response.SetCookie(telc); Response.SetCookie(pasc); Response.SetCookie(idenc); } Response.Redirect("/UserIndex.aspx"); } } } else { /* 自动登录 */ if (Request.Cookies["tel"] != null && Request.Cookies["__p"] != null && Request.Cookies["ide"] != null) { var phone = Request.Cookies["tel"].Value; var password = Request.Cookies["__p"].Value; var iden = Request.Cookies["ide"].Value; if (DataBase.User.Login(new Objects.User() { phone = phone, password = OSecurity.AESDecrypt(password), identity = iden.ToString() })) { Session["phone"] = phone; Session["iden"] = iden; Response.Redirect("/UserIndex.aspx"); } } } }