仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 438|回复: 8
打印 上一主题 下一主题

[学习教程] ASP网页编程之用户注册及跟踪代码(一)

[复制链接]
透明 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:29:23 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
ActiveServerPage技术为应用开发商提供了基于脚本的直观、快速、高效的应用开发手段,极大地提高了开发的效果。在讨论ASP的安全性问题之前,让我们来看看ASP是怎么工作的。用户注册册及确认在线的ASP程序。
1.SQL的表及贮存历程
---------------------------------------------
CREATETABLE[dbo].[userbaseinfo](
[userid][varchar](50)NOTNULL,
[password][varchar](50)NOTNULL,
[validcodelogin][char](50)NOTNULL,
[userlevel][char](1)NULL,
[logintime][char](50)NULL
)ON[PRIMARY]
GO

altertableuserbaseinfo
add
constraintPK_userbaseinfo_userid
primarykey(userid)
Go

CREATETABLE[dbo].[userdetailinfo](
[userid][varchar](50)NOTNULL,
[password][varchar](30)NOTNULL,
[realname][varchar](10)NULL,
[sex][char](10)NULL,
[birthday][datetime]NULL,
[idcode][varchar](50)NULL,
[address][varchar](300)NULL,
[email][varchar](50)NULL,
[telephone][varchar](50)NULL
)ON[PRIMARY]
GO

altertableuserdetailinfo
add
constraintPK_userdetailinfo_userid
primarykey(userid)
Go

SETQUOTED_IDENTIFIEROFFSETANSI_NULLSON
GO

CREATEprocdbo.proc_GetRandom_internal
--获得校验码
@minNuminteger,
@maxNuminteger,
@RandomNumfloatoutput
as
setnocounton

declare@numRangeinteger
declare@ranSeedinteger
declare@curTimedatetime

begin

select@numRange=@maxNum-@minNum+1

select@curTime=getdate()
select@ranSeed=datediff(s,2000-1-1,@curTime)
select@ranSeed=@ranSeed+1
select@RandomNum=rand()*@numRange+@minNum
--print@RandomNum
return
end




GO
SETQUOTED_IDENTIFIEROFF
GO
SETANSI_NULLSON
GO

SETQUOTED_IDENTIFIEROFF
GO
SETANSI_NULLSON
GO


CREATEprocdbo.proc_GetValidCode_Internal
--获得校验码
@CodeLengthinteger,
@ValidCodevarchar(10)output
as
setnocounton

declare@chrRndchar(1)
declare@chrRndNointeger

begin

select@ValidCode=""

while(@CodeLength>0)
begin
execproc_GetRandom_internal1,52,@chrRndNooutput
if@chrRndNo>26
begin
select@chrRndNo=@chrRndNo+6
end
select@chrRnd=char(@chrRndNo+64)
select@ValidCode=@ValidCode+@chrRnd
select@CodeLength=@CodeLength-1
end
print@validCode
return
end



GO
SETQUOTED_IDENTIFIEROFF
GO
SETANSI_NULLSON
GO

SETQUOTED_IDENTIFIEROFF
GO
SETANSI_NULLSON
GO


CREATEprocdbo.proc_UserInfoUpdate
--用户更新团体信息
@ValidCodeLoginvarchar(10),
@RealNameVarchar(10),
@SexVarchar(10),
@Birthdaydatetime,
@IDCodeVarchar(50),
@AddressVarchar(300),
@eMailVarchar(50),
@TelephoneVarchar(50)
as

setnocounton

declare@UserValidFlagint
declare@ValidCodeRegvarchar(30)
declare@UserLevelvarchar(1)
declare@UserIDvarchar(30)

begin
execproc_isUserValidbyCode_internal@ValidCodeLogin,@UserValidFlagoutput
if@UserValidFlag<0
begin
--select@UserValidFlagasresultID
---1用户还没有登录
---2用户超时
return@UserValidFlag
end

select@UserID=UserIDfromUserBaseinfowhereValidCodeLogin=@ValidCodeLogin

UpdateUserDetailInfo
setRealName=@RealName,
Sex=@Sex,
Birthday=@Birthday,
IDCode=@IDCode,
Address=@Address,
eMail=@eMail,
Telephone=@Telephone
where
UserID=@UserID;

if(@RealName=""or@Birthday=""or@Sex=""or@IDCode=""or@Address=""or@eMail=""or@Telephone="")
begin
--select-3asresultID
return-3--信息还没有全体填写
end

select0asresultID

end


GO
SETQUOTED_IDENTIFIEROFF
GO
SETANSI_NULLSON
GO

SETQUOTED_IDENTIFIERON
GO
SETANSI_NULLSON
GO

createprocdbo.proc_UserLogOut
--用户加入
@ValidCodeLoginvarchar(10)
as

setnocounton

declare@UserValidFlagint
declare@UserLevelvarchar(9)

begin
execproc_isUserValidbyCode_internal@ValidCodeLogin,@UserValidFlagoutput
if(@UserValidFlag<0)
begin
--select@UserValidFlagasresultID
return@UserValidFlag
---1用户还没有登录
---2用户超时
end

UpdateUserBaseInfo
setValidCodeLogin=,
LoginTime=1970-1-1
where
ValidCodeLogin=@ValidCodeLogin

--select0asresultID
return0
end

GO
SETQUOTED_IDENTIFIEROFF
GO
SETANSI_NULLSON
GO

SETQUOTED_IDENTIFIEROFF
GO
SETANSI_NULLSON
GO


CREATEprocdbo.proc_UserRegBase
--用户基础材料注册
@UserIDVarchar(30),
@PasswordVarchar(30)
as

setnocounton

declare@UserLevelvarchar(9)
--declare@ValidCodeRegvarchar(10)
declare@ValidCodeLoginvarchar(10)
declare@LoginTimedatetime
declare@userExistint
declare@PwdLengthint

begin
select@UserLevel="0"
select@PwdLength=4
if(datalength(@Password)<@PwdLength)
begin
select-4asreturnID
return-4--暗码长度不敷
end

--execproc_GetValidCode_internal10,@ValidCodeRegoutput--获得用户注册校验码
execproc_GetValidCode_internal10,@ValidCodeLoginoutput--获得用户登录校验码
execproc_isUserExist_internal@UserID,@userExistoutput--获得用户存在标记
select@LoginTime=getdate()
print@userExist
if@userExist=0
begin
select-1asresultID
return-1--用户已存在
end

--拔出用户基础信息表
insertintoUserBaseInfo
(UserID,Password,UserLevel,ValidCodeLogin,LoginTime)
Values(@UserID,@Password,@UserLevel,@ValidCodeLogin,@LoginTime)

--拔出用户具体信息表
insertintoUserDetailInfo
(UserID,Password)Values(@UserID,@Password)


--获得用户注册校验码,登录校验码
select0asresultID
selectValidCodeLoginfromUserBaseInfowhereUserID=@UserID

return0
end


GO
SETQUOTED_IDENTIFIEROFF
GO
SETANSI_NULLSON
GO

SETQUOTED_IDENTIFIEROFF
GO
SETANSI_NULLSON
GO


createprocdbo.proc_isUserExist_internal
--判别用户名是不是存在
@UserIDVarchar(30),
@existFlagintoutput
as

setnocounton
begin

ifnotEXISTS(select*fromUserBaseInfowhereUserID=@UserID)
begin
select@existFlag=-1
return
end
select@existFlag=0
return
end

GO
SETQUOTED_IDENTIFIEROFF
GO
SETANSI_NULLSON
GO

SETQUOTED_IDENTIFIEROFF
GO
SETANSI_NULLSON
GO


createprocdbo.proc_isUserValidbyCode_internal
--用户身份查验(依据登录校验码)
@ValidCodeLoginvarchar(10),
@validFlagintoutput
as

setnocounton

declare@LoginTimedatetime
declare@curTimedatetime
declare@diffTimedatetime

begin
ifnotEXISTS(select*fromUserBaseInfowhereValidCodeLogin=@ValidCodeLogin)
begin
select@validFlag=-1--用户还没有登录
return
end

select@LoginTime=(selectLoginTimefromUserBaseInfowhereValidCodeLogin=@ValidCodeLogin)
select@curTime=getdate()
select@diffTime=datediff(hh,@LoginTime,@curTime)
if@diffTime>=10
begin
select@validFlag=-2--用户超时
return
end

select@LoginTime=getdate()--获得用户最初登录工夫
updateUserBaseInfosetLoginTime=@LoginTimewhereValidCodeLogin=@ValidCodeLogin

select@validFlag=0
return
end

GO
SETQUOTED_IDENTIFIEROFF
GO
SETANSI_NULLSON
GO


Access是一种桌面数据库,只适合数据量少的应用,在处理少量数据和单机访问的数据库时是很好的,效率也很高。但是它的同时访问客户端不能多于4个。access数据库有一定的极限,如果数据达到100M左右,很容易造成服务器iis假死,或者消耗掉服务器的内存导致服务器崩溃。
谁可相欹 该用户已被删除
9#
发表于 2015-3-21 02:20:35 | 只看该作者
我想问如何掌握学习节奏(先学什么再学什么)最好详细点?
若天明 该用户已被删除
8#
发表于 2015-3-14 09:21:27 | 只看该作者
以上是语言本身的弱点,在功能方面ASP同样存在问题,第一是功能太弱,一些底层操作只能通过组件来完成,在这点上是远远比不上PHP/JSP,其次就是缺乏完善的纠错/调试功能,这点上ASP/PHP/JSP差不多。
小妖女 该用户已被删除
7#
发表于 2015-3-7 02:20:09 | 只看该作者
ASP.Net摆脱了以前ASP使用脚本语言来编程的缺点,理论上可以使用任何编程语言包括C++,VB,JS等等,当然,最合适的编程语言还是MS为.NetFrmaework专门推出的C(读csharp),它可以看作是VC和Java的混合体吧。
飘飘悠悠 该用户已被删除
6#
发表于 2015-2-22 20:12:21 | 只看该作者
Session:这个存储跟客户端会话过程的数据,默认20分钟失效
第二个灵魂 该用户已被删除
5#
发表于 2015-2-7 17:43:44 | 只看该作者
如何学好ASP,以前也有人问过,把回答给你转过来看看能否对你有帮助:
小女巫 该用户已被删除
地板
发表于 2015-2-2 07:43:05 来自手机 | 只看该作者
我可以结合自己的经验大致给你说一说,希望对你有所帮助,少走些弯路。
莫相离 该用户已被删除
板凳
发表于 2015-1-24 15:54:49 | 只看该作者
学习是为了用的,是为了让你的程序产生价值,把握住这个原则会比较轻松点。除此之外,课外时间一定要多参加一些社会实践活动,来锻炼自己的能力。
精灵巫婆 该用户已被删除
沙发
发表于 2015-1-19 14:38:54 | 只看该作者
以HTML语言整合(HTML负责界面上,ASP则负责功能上)形成一个B/S(浏览器/服务器)模式的网页程序。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-25 15:08

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表