首页 新闻 会员 周边 捐助

SQL;存储过程 ;要用到通过用户输入的IP合法性进行检验 ;

0
悬赏园豆:20 [已解决问题] 解决于 2010-09-20 13:47

IP; 合法性 ;要 考虑 (@logonip)是这个数值之间 1-255;

例如:198.89.121.212

创建声明

````````

@logonip varchar(15)

有哪位大侠知道  请接着这句写!  在线等!

 

sj3136456的主页 sj3136456 | 初学一级 | 园豆:35
提问于:2010-09-20 10:10
< >
分享
最佳答案
0

其实可以用正则表达式。

这里写了一个比较体的办法:

Create procedure CheckIPAddress
(
@logonip nvarchar(15)
,
@result int output)
as
Declare @temp nvarchar(4)
Declare @num int

set @logonip=ltrim(rtrim(@logonip))
if (len(@logonip)>15)
goto ErrorResult

while(charindex('.',@logonip)>0)
begin

set @temp=substring(@logonip,1,charindex('.',@logonip)-1)
print '@temp='+@temp
IF (ISnumeric(@temp)=1)
begin
set @num=cast(@temp as int)

end
else
goto ErrorResult

if(@num<0 or @num>255)
goto ErrorResult
set @logonip=substring(@logonip,charindex('.',@logonip)+1,len(@logonip)-charindex('.',@logonip)+1)


end

IF (ISnumeric(@logonip)=1)
begin
set @logonip=cast(@logonip as int)
end
else
goto ErrorResult
set @result=1
print '合法'
return @result--验证合法

ErrorResult:
set @result=-1;
print '非法'
return @result--验证非法

GO
调用

CheckIPAddress '134.1899.1.73',-1

 

收获园豆:20
邀月 | 高人七级 |园豆:25475 | 2010-09-20 12:27
谢谢大哥你的关注!
sj3136456 | 园豆:35 (初学一级) | 2010-09-20 13:47
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册