[音乐]
大家好,本次课我们再为大家讲解一个例子 统计
IP 地址登录次数,我们来简单看一下要求
要求对我们上周所做的页面 index3.htm
加上统计 IP 地址登录次数的功能 要求呢能够显示出
IP 地址和对应的登录次数 并将网页命名为
index4.aspx 进行发布测试。
所用到的工具是 VS2013 好,那我们一起来做一下。
我们先打开 VS,我们这块儿打开了。
新建一个项目 好,然后我们新建一个
web 窗体 命名为 index4,前面要求我们用
index4 来命名 添加,好
接着呢我们打开上次课 我们所做的
index3 文件 然后呢,把它相关的内容复制过来。
我们复制的时候呢只需要复制 div 的内容 其他的就可以不用复制了
然后把它放在这个 div,form 里面的 div 就可以了。
由于现在呢我们这个 asp 本身带 form,所以这块就多了一个
form,这个 form 是原来我们单选钮里面带的 form 所以我们把这个 form
删掉,一般来说它这里面只能有一个 form,好保存一下 index3 我们就没用了。
为了使我们的这个程序能正确运行 我们需要把上次我们做的
js 文件,css 还有图片文件的目录呢
都拷到我们相应的目录下 这样的话才不会出问题
好,现在呢我们就开始做我们的事情了 大家可以看到这个现在是乱的,因为 iis
没进来 大家看到现在这个内容是乱的 iis 呢没有调入进来。
我们现在加在哪儿加呢? 我们把这个登入这个 IP
呢加到个版权所有这个上面,也就是加到我们 footer
那个部分,为此呢,我们把这块给它插入 我们在这块插入一些相关的对象。
什么对象呢?这里边首先要插入一个 Button 再插入一个
Label,好,我们把这两个属性设置一下 这个
label 呢我让它开始是空文本 名字呢显示是
IP_label 这个 Button
呢,这个 Button 呢我们只需要改它的 text 属性 写一个 IP
统计就可以了 好了
那么这样一来实际上我们现在这个功能按钮都已经有了 我们在这里面呢要进行
IP 地址的 统计,实际上是用到我们相关的一些对象
cookie 还有 recast 等等相关的一些对象。
好,那么我们先来看一下 我这个页面装入的时候我要做一些处理,什么处理呢
我们打开我们相关的页面
好,我们来看一下页面装入时候 我们的事件代码该如何写。
首先呢,这里面我们要有一个条件判断
如果是我第一次进这个页面的话,那么我们应该给它置 1 开始计数了。
如果说不是的话,也就是不是第一次登入的话 那么我们应该调出 cookie
里面的值来给它累加,大概思想是这样的 所以呢,我们在处理的时候我们先做这么一个判断
IsPostBack 并且取反,这个表明是
第一次加载,所以呢在这里面如果不是第一次的话,那么我们给它做个动作,我们首先定义- 一个变量
比如说 V_C 然后呢,这时候呢我们还要判断一下
判断什么呢?判断我们当前 cookie
里面的值是否是为空的,V_C 如果它为空怎么办呢?如果取出来的
cookie 值呢是空 这时候呢我们给它赋值为
0 证明呢我要开始用了,然后呢
如果说不为空,不为空意味着呢我们这里面已经有以前的值了
所以呢这时候呢,我们要调入以前的值,所以呢 V_C
我们这一块呢 让它等于 request.cookie
的 V_C 里面存的值
把它的值取出来 然后呢送给我这个
V_C,但是这里面呢要注意 这块呢要把它做一个处理,这样直接打的话它这个出来不是整型的,所以我们用一个
函数处理成整型的,好 然后呢,我们把这个做完以后呢
这时候呢我们要开始处理了,这个 V_C
呢每点一次呢 要递加一次,我们用 ++,然后呢我们还要
做一个实例 cookie,这个实例呢
实际上就是为我们后面这个 cookie 的存储用的
并且呢它这个实例里面,我们要把 V_C
加上 好,然后这个定义了 cookie
它的属性我们要做一些设置,一个是它的值 等于什么呢?就是我们这个
V_C 的值 但是这里面呢我们最好用 ToString
来转换一下,转换成字符串 然后呢这个 cookie
呢还有一个值 我们在课堂上给大家提到过是一个有效期,我们怎么设置呢
其实呢如果你不想设置的话,你就直接用一个 DateTime.
MaxValue, 这样的话是最大值就没有问题了。
如果你不设置的话 那么这个 cookie 变量呢它会在页面关闭掉以后呢,自动的就会
被释放,这个 Response 有一个方法
把这个 cookie 存进去,好
这样一来呢我们页面装入的这个事件呢就处理完毕 下面还有一个我们点击按钮的时候该如何处理
那么这时候同样的要进行判断,判断什么呢?判断 这个值是否是为空的,如果是为空的话
怎么办呢? IP_label 它的 text
就等于我们给它赋值为 这是我第一次点击,所以赋值为
1,如果不是的话 那么说明我们以前已经登入过,那这时候要取出以前登录的值
在这里面呢对这个变量进行一个实例化 等于 Request.
Cookies V_C,
好然后呢 取出来以后我们
把刚才有一个 IP_label.text 让它的值等于什么呢?来自于我们服务器的
cookies 注意我们这块要用一个函数,这个函数呢是为了避免
一些恶意的用户向我们这里面插一些 恶意的脚本,所以呢我们用这个函数呢
把我们这个 cookie 的这个值呢处理一下 这样的话呢我们这 if
里面也就处理完了,但是呢我们说有一个 IP 我们要显示 IP
地址,所以呢我们再给 IP address 它的
text 我们做一个处理 让它等于什么呢?还是我们请求的对象,它里面有一个
用户 HostAddress,在这里面呢我们把它转换成 String
好,这样一来呢我们这个整个从函数功能上来说 就实现了,我们来看一下,生成一下
没有编译错误,所以呢我们打开来看一下 127.0.0.1
index4,这个页面不太美观啊,把底下这个字也挤下去了,我们先看一下功能 IP
统计,好,地址出来了,次数也出来了
但是这一块呢,我们再刷新大家看一下,我刷新的这个次数变了没 没有变。
为什么没变呢?就是因为我们刚才在程序的开头我们就给出了一个 它是否是第一次,如果是第一次加载页面的话
那么我给你计数,如果你要刷新的话我是不算数的。
我们为了验证它,我们把这个再关掉,再打开一次 大家看看这个变化啊。
刚才我在刷新的时候它没有任何作用,也就是那个数字一直是 1
现在呢我们重新打开一次,重新加载一次 然后呢我点统计,注意看这个
1 呢已经变成 2 了 如果我再刷新的话它还是没有用的。
所以这个就实现了刷新 不计数,只有重新打开页面才有效这样的一个功能 当然这个格式呢看上去还有点问题。
我们只需要把相关的 CSS 稍微做一个修改就可以了 我们打开它,我们在这个
footer 里面加 一个字,字体的大小
font size,比如说我们加一个
14px,好保存,然后我们再来看一下这个页面
好了,现在呢实际上就好看多了,当然呢大家还可以再设计一下把这按钮再提上来
或者给这块呢,这块加一个 换行,这样的话呢就比较好一些。
否则的话呢,这个看上去呢 还不是太好看。
br 好我们再来刷新一下。
我们最简单的办法就是把这个高度稍微调整一下 这实际上呢大家都可以自己去调。
我是因为我们都学了 CSS 所以这个就比较简单了。
只是呢这个想让大家看一下,好了,这个现在就出来了 所以这个页面呢就实现了相关的我们要求的功能
也希望大家能够在我们所学的基础上,你们再进一步的去探索一些新的功能、 新的发现
还是我那句话,大家一定要多练习,这样的话呢才能掌握 相关的技能。
好,本讲呢我们就先给大家讲到这里,谢谢大家