Esempio n. 1
0
        /// <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);
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
 /// <summary>
 /// 后去jsapi_ticket,每次调用接口都调用此函数,不要记录
 /// </summary>
 /// <returns></returns>
 public static string GetJsapiTicket()
 {
     if (access_token == String.Empty ||
         OSecurity.DateTimeToTimeStamp(DateTime.Now) > timeStamp)
     {
         RefreshAccessToken();
     }
     return(jsapi_ticket);
 }
Esempio n. 4
0
 /// <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);
 }
Esempio n. 5
0
        public static string WXJSSign(string nonce, Int64 timestamp, string url)
        {
            string str = "jsapi_ticket=" + GetJsapiTicket() +
                         "&noncestr=" + nonce +
                         "&timestamp=" + timestamp.ToString() +
                         "&url=" + url;

            str = OSecurity.SHA1(str);
            return(str);
        }
Esempio n. 6
0
        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");
                    }
                }
            }
        }
Esempio n. 7
0
        /// <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);
        }
Esempio n. 8
0
 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);
     }
 }
Esempio n. 9
0
        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);
        }
Esempio n. 10
0
        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);
            }
        }
Esempio n. 11
0
        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));
        }
Esempio n. 12
0
 public override string ToXML()
 {
     CreateTime = OSecurity.DateTimeToTimeStamp(DateTime.Now);
     return(WXManage.ToXML(this));
 }
Esempio n. 13
0
 public XMLObject()
 {
     CreateTime = OSecurity.DateTimeToTimeStamp(DateTime.Now);
 }
Esempio n. 14
0
        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;
                }
            }
        }
Esempio n. 15
0
        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;
                }
            }
        }
Esempio n. 16
0
        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");
                    }
                }
            }
        }