IP限制访问量

2024-02-22 14:38
文章标签 ip 限制 访问量

本文主要是介绍IP限制访问量,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 private void ValidIPRequest()
    {
        string ip = "";
        string temptime = "";
        string time = "";

        try
        {
            ip = Request.ServerVariables["HTTP_X_FORWARDED_FOR"];//使用代理服务器时,透过代理获得客户机真实IP

            if (ip == null)
            {
                ip = Request.ServerVariables["REMOTE_ADDR"];//当不采用代理时,直接获得客户机IP
            }

            time = DateTime.Now.ToString("yyyy-MM-dd");//此IP访问时的服务器时间

            SqlDBManager db = new SqlDBManager(System.Configuration.ConfigurationSettings.AppSettings["ConnString"].ToString());

            System.Data.SqlClient.SqlDataReader sdr = db.Select("select top 1 _time from ipday order by _time desc");

            try
            {
                if (sdr.HasRows)
                {
                    while (sdr.Read())
                    {
                        temptime = Convert.ToString(sdr.GetDateTime(0));
                    }
                }
            }
            finally
            {
                sdr.Close();
                db.ConnClose();
            }

            if (temptime == null || temptime == "")
            {
                temptime = time;
            }

            DateTime dt = Convert.ToDateTime(time);//转换当前服务器时间 为时间型
            DateTime tempdt = Convert.ToDateTime(temptime);//转换当前IP数据时间 为时间型

            if (dt == tempdt)  //服务器时间与IP数据时间相同 说明是当天的点击
            {
                IPRequest();
            }
            if (dt > tempdt) //服务器时间>IP数据时间 说明是第二天的点击 获得前一天的点击总数存入iprecord表 并删除ipday中前一天的所有记录
            {
                int topnum = 0;
                System.Data.SqlClient.SqlDataReader sdr1 = db.Select("select sum(num) from ipday");
                try
                {
                    if (sdr1.HasRows)
                    {
                        while (sdr1.Read())
                        {
                            topnum = sdr1.GetInt32(0);
                        }
                    }
                }
                finally
                {
                    sdr1.Close();
                    db.ConnClose();
                }

                db.Delete("delete from ipday where _time='" + temptime + "'");
                db.Insert("insert into iprecord(_time,topnum) values ('" + temptime + "'," + topnum + ")");

                IPRequest();
            }
        }
        catch (Exception ex)
        {
            throw (ex);
        }
    }

    private void IPRequest()
    {
        bool b = db.CheckEnable("ip", ip, "ipday");//检验此IP 今天是否访问过 表中存在为false 不存在为true

        if (b == false)    //此IP今天访问过
        {
            int n = Convert.ToInt32(db.AnyKey("num", "ip", ip, "ipday"));//获得此IP 今天的访问次数
            if (n == 3)
            {
                Response.Write("<script>alert('你已经点了3次了,一天只能点3次');</script>");
                return;
            }
            else if (n < 3)
            {
                n++;
                db.Update("update ipday set num=" + n);
                Response.Write("<script language=javascript>window.open('目标页.aspx');</script>");
            }
        }
        else  //此IP今天没有访问过
        {
            db.Insert("insert into ipday(ip,_time,num) values ('" + ip + "','" + time + "',1)");
            Response.Write("<script language=javascript>window.open('目标页.aspx');</script>");
        }
    }

这篇关于IP限制访问量的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/735562

相关文章

poj 2135 有流量限制的最小费用最大流

题意: 农场里有n块地,其中约翰的家在1号地,二n号地有个很大的仓库。 农场有M条道路(双向),道路i连接着ai号地和bi号地,长度为ci。 约翰希望按照从家里出发,经过若干块地后到达仓库,然后再返回家中的顺序带朋友参观。 如果要求往返不能经过同一条路两次,求参观路线总长度的最小值。 解析: 如果只考虑去或者回的情况,问题只不过是无向图中两点之间的最短路问题。 但是现在要去要回

poj 3422 有流量限制的最小费用流 反用求最大 + 拆点

题意: 给一个n*n(50 * 50) 的数字迷宫,从左上点开始走,走到右下点。 每次只能往右移一格,或者往下移一格。 每个格子,第一次到达时可以获得格子对应的数字作为奖励,再次到达则没有奖励。 问走k次这个迷宫,最大能获得多少奖励。 解析: 拆点,拿样例来说明: 3 2 1 2 3 0 2 1 1 4 2 3*3的数字迷宫,走两次最大能获得多少奖励。 将每个点拆成两个

poj 2195 bfs+有流量限制的最小费用流

题意: 给一张n * m(100 * 100)的图,图中” . " 代表空地, “ M ” 代表人, “ H ” 代表家。 现在,要你安排每个人从他所在的地方移动到家里,每移动一格的消耗是1,求最小的消耗。 人可以移动到家的那一格但是不进去。 解析: 先用bfs搞出每个M与每个H的距离。 然后就是网络流的建图过程了,先抽象出源点s和汇点t。 令源点与每个人相连,容量为1,费用为

poj 3068 有流量限制的最小费用网络流

题意: m条有向边连接了n个仓库,每条边都有一定费用。 将两种危险品从0运到n-1,除了起点和终点外,危险品不能放在一起,也不能走相同的路径。 求最小的费用是多少。 解析: 抽象出一个源点s一个汇点t,源点与0相连,费用为0,容量为2。 汇点与n - 1相连,费用为0,容量为2。 每条边之间也相连,费用为每条边的费用,容量为1。 建图完毕之后,求一条流量为2的最小费用流就行了

2024.9.8 TCP/IP协议学习笔记

1.所谓的层就是数据交换的深度,电脑点对点就是单层,物理层,加上集线器还是物理层,加上交换机就变成链路层了,有地址表,路由器就到了第三层网络层,每个端口都有一个mac地址 2.A 给 C 发数据包,怎么知道是否要通过路由器转发呢?答案:子网 3.将源 IP 与目的 IP 分别同这个子网掩码进行与运算****,相等则是在一个子网,不相等就是在不同子网 4.A 如何知道,哪个设备是路由器?答案:在 A

linux下查看自己的外网ip

局域网的服务器是通过ADSL路由器连接外网的,但ADSL是从ISP运营商那儿通过动态获得IP的,那么我怎么知道自己的外网地址是多少呢? 今天得到几个办法: curl -s http://whatismyip.org wget http://whatismyip.org 然后再  cat index.html 也可以看到

一些数学经验总结——关于将原一元二次函数增加一些限制条件后最优结果的对比(主要针对公平关切相关的建模)

1.没有分段的情况 原函数为一元二次凹函数(开口向下),如下: 因为要使得其存在正解,必须满足,那么。 上述函数的最优结果为:,。 对应的mathematica代码如下: Clear["Global`*"]f0[x_, a_, b_, c_, d_] := (a*x - b)*(d - c*x);(*(b c+a d)/(2 a c)*)Maximize[{f0[x, a, b,

linux下TCP/IP实现简单聊天程序

可以在同一台电脑上运行,在一个终端上运行服务器端,在一个终端上运行客户端。 服务器端的IP地址要和本地的IP相同,并分配端口号,客户端的默认设置为本地,端口号自动分配。 服务器端: #include <stdio.h>#include <stdlib.h>#include <errno.h>#include <string.h>#include <sys/types.

超越IP-Adapter!阿里提出UniPortrait,可通过文本定制生成高保真的单人或多人图像。

阿里提出UniPortrait,能根据用户提供的文本描述,快速生成既忠实于原图又能灵活调整的个性化人像,用户甚至可以通过简单的句子来描述多个不同的人物,而不需要一一指定每个人的位置。这种设计大大简化了用户的操作,提升了个性化生成的效率和效果。 UniPortrait以统一的方式定制单 ID 和多 ID 图像,提供高保真身份保存、广泛的面部可编辑性、自由格式的文本描述,并且无需预先确定的布局。

C# 如何同时Ping多个IP地址

在C#中,如果需要同时ping多个IP地址,可以采用多线程或异步编程的方式来实现,以便可以同时进行多个ping操作。以下是两种常用的方法: 方法一:使用多线程(Task 或 Thread) 使用Task是更现代和推荐的方式,因为它内置了更好的线程管理和异常处理机制。以下是一个使用Task的示例,展示如何同时ping多个IP地址: using System; using System.Co