WebForm业务系列-会员功能
用了这么久的webform,还记得刚开始根本不知道程序要写成什么样,只知道功能实现了就行,有很多现实的问题都没考虑到。所以程序改了又改,最后连自己做的什么都不知道了。所以,现在来总结一下。
会员功能 模块 大致分为 注册 登陆 用户信息管理 用户参与网站业务 4个方面。
1、注册。
因为网站运营的需要,可能注册页面不止一个。所以将注册的后台功能剥离出来,用注册的时候直接将信息发送到 register.ashx页面。
所以网站结构大概是 register.aspx.cs-->register.aspx-->register.ashx-->注册成功跳转。
数据库:
1、网站配置数据库。记录被禁止注册登陆的IP地址。注册时间间隔(也可写在web.config中)
2、用户登陆信息表-安全信息表-用户业务信息表
登陆表 存登陆就要用的信息。
安全信息表 存注册时间,安全问题等
业务信息表 存用户网站的业务信息,如:钱包,积分,不常用的个人信息:邮箱、qq、职业等,最后登陆时间。。。。
register.aspx.cs进入注册页面时运行,功能:判断注册次数,IP是否禁用,注册间隔(是否重复注册)
protected void Page_Load(object sender, EventArgs e) { string sqlConfig="select top 1 * from Web_Config"; DataTable table = SqlHelper.GetDateTable(sqlConfig); ) { ]["IPDisabled"].ToString();//禁止注册IP ]["ReRegTimeSpan"];//注册间隔 ]["maxRegCount"];//同一IP最大注册数量 string ip=获得IP(); 判断当前IP是否被限制(strDIP,ip ); 判断是否为重复注册(regSpan); 检测IP注册次数(maxRegCount,ip); //如果都满足条件,进入register.aspx页面填写表单 } } private void 判断当前IP是否被限制(string strDIP,string ip )//判断IP是否被限制的方法 { List<string> list = new List<string>(str.Split(new char[] { ',' })); if (list.Contains("*.*.*.*")) { base.Response.Write("当前暂停注册,请稍后再来尝试。"); base.Response.End(); } ))) || list.Contains(CutIP(iP, ))) || list.Contains(CutIP(iP, ))) { base.Response.Write("您的IP段在被限制的范围内,不能进行注册,请联系我们的客服进行咨询。"); base.Response.End(); } } public string CutIP(string ip, int len)//公共方法在common.cs中,为了看起方便,暂时写在register.aspx.cs中 { ) { if (string.IsNullOrEmpty(ip)) { return ""; } Match match = new Regex(@"(\d+)\.(\d+)\.(\d+)\.(\d+)", RegexOptions.Compiled | RegexOptions.IgnoreCase).Match(ip); if (match.Success) { ) ? ].Value, (len >= ) ? ].Value, (len >= ) ? ].Value, (len >= ) ? ].Value }); } } return ip; } private void 判断是否为重复注册(string num)//判断是否为重复注册 { object obj2 = BCSTCache.Default.Get<CookiesCache>("RegDateTime");//这个方法是调用的第三方的类库中操作cookies的方法,注册成功后会将时间写入cookies。 if ((obj2 != null) && CommonManager.String.IsDateTime(obj2.ToString())) { TimeSpan span = (TimeSpan)(DateTime.Now - DateTime.Parse(obj2.ToString())); if (span.TotalMinutes < num) { base.Response.Write("请不要重复注册。"); base.Response.End(); } } private void 检测IP注册次数(string maxRegCount,string ip) { ) { int num3 = (int)DbSession.Default.FromSql("select COUNT(1) FROM dbo.Web_Users WHERE RegisterIP='" + iP + "' AND DATEDIFF(d,RegisterTM,GETDATE())=0").ToScalar(); if (num3 >= maxRegCount) { base.Response.Write("您的IP今日注册人数已达到限制数。"); base.Response.End(); } } private string 获得IP() { if ((Request.ServerVariables["HTTP_X_FORWARDED_FOR"] != null) && (Request.ServerVariables["HTTP_X_FORWARDED_FOR"] != "")) { return Request.ServerVariables["HTTP_X_FORWARDED_FOR"]; } return Request.ServerVariables["REMOTE_ADDR"]; }
好累啊,写文章和写代码果然不一样,代码写久了总会有一些自己收集的代码库,在文章中又不好表述。剩下的过两天再写。
(未完待续)
WebForm业务系列-会员功能的更多相关文章
- Dynamics AX 2012 R2 业务系列-销售业务流程
在博文Dynamics AX R2 业务系列中,Reinhard对这个系列做了一个规划,下面我们就按照规划开始说业务吧. 1.销售的主要职责 其实这里说的职责主要是针对销售文员,并非整天外面满世界跑业 ...
- Dynamics AX 2012 R2 业务系列-采购业务流程
在博文Dynamics AX R2 业务系列中,Reinhard对这个系列做了一个规划,下面我们就按照规划开始说业务吧. 国际惯例,从采购开始. 1.采购的主要职责 简单点说,采购的主要职责,是从供应 ...
- dede添加会员功能听语音
http://jingyan.baidu.com/article/363872ec36d33f6e4ba16fb7.html 其实 dede里面的 会员功能就是圈子模版啦 圈子 安装了 基本上有 1, ...
- dede开启会员功能
登陆后台,找到菜单里面的系统基本参数设置>会员设置>开启会员功能,选择“是”,保存即可
- 03.Web大前端时代之:HTML5+CSS3入门系列~H5功能元素
Web大前端时代之:HTML5+CSS3入门系列:http://www.cnblogs.com/dunitian/p/5121725.html 2.功能元素 1.hgroup 对网页或区段(secti ...
- Dynamics AX 2012 R2 业务系列
在之前的一系列博文里,Reinhard介绍了Dynamics AX Demo的安装与配置.相信同学们看完后,都已经成功拥有了一个测试环境. 众所周知的是,ERP作为一个特殊的软件系统,他有着背后的业务 ...
- Nginx实战系列之功能篇----后端节点健康检查(转)
公司前一段对业务线上的nginx做了整理,重点就是对nginx上负载均衡器的后端节点做健康检查.目前,nginx对后端节点健康检查的方式主要有3种,这里列出: 1.ngx_http_proxy_m ...
- Nginx实战系列之功能篇----后端节点健康检查
目前,nginx对后端节点健康检查的方式主要有3种,这里列出: 1.ngx_http_proxy_module 模块和ngx_http_upstream_module模块(自带) 官网地址: ...
- N32G4系列——复用功能重映射(USART为例)
开发测试环境:SDK,N32G455x系列芯片 在国民MCU中G系列IO口有第二复用功能,这时需要用到重映射功能. 一.系列芯片手册定义 1.1.芯片IO口默认功能查看 如图,在该系列芯片的数据手册中 ...
随机推荐
- Date小技巧:set相关操作及应用_获取当前月(季度/年)的最后一天
set操作还是有不少的,具体见 http://www.w3school.com.cn/jsref/jsref_obj_date.asp, 今天我就只说 setFullYear, setMonth, s ...
- ZeroC Ice启用SSL通讯的配置
Zeroc ICE ( Internet Communications Engine )中间件号称标准统一,开源,跨平台,跨语言,分布式,安全,服务透明,负载均衡,面向对象,性能优越,防火墙穿透,通讯 ...
- 使用IdleTest进行TDD单元测试驱动开发演练(3) 之 ASP.NET MVC
一.[前言] (1)本文将用到IOC框架Unity,可参照<Unity V3 初步使用 —— 为我的.NET项目从简单三层架构转到IOC做准备>(2)本文的解决方案是基于前述<使用I ...
- IOS 网络浅析-(十一 三方 AFNetworking3.0简介)
AFNetworking3.0是目前最新的版本,本来打算介绍一下2.6,但是想想2.6名不久矣,就决定不介绍了,有兴趣的小伙伴可以上网查一查.下面我就开始进入正题了. 目前使用人数最多的第三方网络库, ...
- SQL Sever 博客文章目录(2016-07-06更新)
SQL Server方面的博客文章也陆陆续续的写了不少了,顺便也将这些知识点整理.归纳一下下.方便自己和他人查看. MS SQL 数据类型 三大数据库对比研究系列--数据类型 MS SQL 表和视图 ...
- hadoop-2.7.1伪分布环境搭建
1.准备Linux环境 1.0 点击VMware快捷方式,右键打开文件所在位置 -> 双击vmnetcfg.exe -> VMnet1 host-only ->修改subnet i ...
- SQL语句中的where 1=1 和0=1
摘自:http://blog.sina.com.cn/s/blog_afe616ab0101camd.html SQL where 1=1 和0=1的作用 where 1=1; 这个条件始终为True ...
- JavaScript & PHP模仿C#中string.format效果
1.JavaScript function stringformat() { var args = Array.prototype.slice.call(arguments); if (args.le ...
- [数据科学] 从text, json文件中提取数据
文本文件是基本的文件类型,不管是csv, xls, json, 还是xml等等都可以按照文本文件的形式读取. #-*- coding: utf-8 -*- fpath = "data/tex ...
- 《HeadFirst SQL》笔记
规范化 0 约束 1 原子性 2 第一范式 1NF 3 数据模式 4 依赖 5 联接查询 6 交叉联接(AKA 笛卡尔联接,叉积) 7 内联接 8 子查询 9 外联接 10 自联接 11 集合 12 ...