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

相关文章

Ubuntu固定虚拟机ip地址的方法教程

《Ubuntu固定虚拟机ip地址的方法教程》本文详细介绍了如何在Ubuntu虚拟机中固定IP地址,包括检查和编辑`/etc/apt/sources.list`文件、更新网络配置文件以及使用Networ... 1、由于虚拟机网络是桥接,所以ip地址会不停地变化,接下来我们就讲述ip如何固定 2、如果apt安

查询SQL Server数据库服务器IP地址的多种有效方法

《查询SQLServer数据库服务器IP地址的多种有效方法》作为数据库管理员或开发人员,了解如何查询SQLServer数据库服务器的IP地址是一项重要技能,本文将介绍几种简单而有效的方法,帮助你轻松... 目录使用T-SQL查询方法1:使用系统函数方法2:使用系统视图使用SQL Server Configu

使用Java实现获取客户端IP地址

《使用Java实现获取客户端IP地址》这篇文章主要为大家详细介绍了如何使用Java实现获取客户端IP地址,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 首先是获取 IP,直接上代码import org.springframework.web.context.request.Requ

C++实现获取本机MAC地址与IP地址

《C++实现获取本机MAC地址与IP地址》这篇文章主要为大家详细介绍了C++实现获取本机MAC地址与IP地址的两种方式,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 实际工作中,项目上常常需要获取本机的IP地址和MAC地址,在此使用两种方案获取1.MFC中获取IP和MAC地址获取

C/C++通过IP获取局域网网卡MAC地址

《C/C++通过IP获取局域网网卡MAC地址》这篇文章主要为大家详细介绍了C++如何通过Win32API函数SendARP从IP地址获取局域网内网卡的MAC地址,感兴趣的小伙伴可以跟随小编一起学习一下... C/C++通过IP获取局域网网卡MAC地址通过win32 SendARP获取MAC地址代码#i

shell脚本快速检查192.168.1网段ip是否在用的方法

《shell脚本快速检查192.168.1网段ip是否在用的方法》该Shell脚本通过并发ping命令检查192.168.1网段中哪些IP地址正在使用,脚本定义了网络段、超时时间和并行扫描数量,并使用... 目录脚本:检查 192.168.1 网段 IP 是否在用脚本说明使用方法示例输出优化建议总结检查 1

Redis连接失败:客户端IP不在白名单中的问题分析与解决方案

《Redis连接失败:客户端IP不在白名单中的问题分析与解决方案》在现代分布式系统中,Redis作为一种高性能的内存数据库,被广泛应用于缓存、消息队列、会话存储等场景,然而,在实际使用过程中,我们可能... 目录一、问题背景二、错误分析1. 错误信息解读2. 根本原因三、解决方案1. 将客户端IP添加到Re

SpringBoot实现基于URL和IP的访问频率限制

《SpringBoot实现基于URL和IP的访问频率限制》在现代Web应用中,接口被恶意刷新或暴力请求是一种常见的攻击手段,为了保护系统资源,需要对接口的访问频率进行限制,下面我们就来看看如何使用... 目录1. 引言2. 项目依赖3. 配置 Redis4. 创建拦截器5. 注册拦截器6. 创建控制器8.

Linux限制ip访问的解决方案

《Linux限制ip访问的解决方案》为了修复安全扫描中发现的漏洞,我们需要对某些服务设置访问限制,具体来说,就是要确保只有指定的内部IP地址能够访问这些服务,所以本文给大家介绍了Linux限制ip访问... 目录背景:解决方案:使用Firewalld防火墙规则验证方法深度了解防火墙逻辑应用场景与扩展背景:

如何提高Redis服务器的最大打开文件数限制

《如何提高Redis服务器的最大打开文件数限制》文章讨论了如何提高Redis服务器的最大打开文件数限制,以支持高并发服务,本文给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧... 目录如何提高Redis服务器的最大打开文件数限制问题诊断解决步骤1. 修改系统级别的限制2. 为Redis进程特别设置限制