PHP获取IP 文件写入与行修改

2024-01-10 01:48
文章标签 ip php 获取 修改 写入 与行

本文主要是介绍PHP获取IP 文件写入与行修改,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

·做了一个投票放在微信订阅号上,通过cookie来实现禁止刷票,这个真是只能防君子不能防小人,出现了恶意刷票;所以最后改为用IP来限制;

因为是一个短暂的活动,就把IP的记录写入了文件,没有再写入表中;

我的验证规则是:同个ID 对应的同一个IP3分钟内只能投一票;

代码写的不是很好,急着上交 ,先看着吧 ,以后再完善

function GetIP() {if ($_SERVER["HTTP_X_FORWARDED_FOR"])$ip = $_SERVER["HTTP_X_FORWARDED_FOR"];else if ($_SERVER["HTTP_CLIENT_IP"])$ip = $_SERVER["HTTP_CLIENT_IP"];else if ($_SERVER["REMOTE_ADDR"])$ip = $_SERVER["REMOTE_ADDR"];else if (getenv("HTTP_X_FORWARDED_FOR"))$ip = getenv("HTTP_X_FORWARDED_FOR");else if (getenv("HTTP_CLIENT_IP"))$ip = getenv("HTTP_CLIENT_IP");else if (getenv("REMOTE_ADDR"))$ip = getenv("REMOTE_ADDR");else$ip = "Unknown";return $ip;
}
$iptxt = fopen("./data/lovewall.txt", "a+");$ip = GetIP();$ifok = $i = 1;while (!feof($iptxt)) { $now = fgets($iptxt);//获取遍历行的内容if(!empty($now)){$now_arr = explode('#',$now);if($now_arr[1]==$ip&&$now_arr[2]==$_G['gp_show']."\n"){$ifok = 0;if($now_arr['0']+180>time()){$return = array('status'=>0,'err_msg'=>'一封情书三分钟内只限赠送一次哦');echo json_encode($return);exit;}else{$all = file_get_contents('./data/lovewall.txt');$new = time().'#'.$ip.'#'.$_G['gp_show']."\n";$update_str = str_replace($now,$new, $all);//替换 间接实现修改file_put_contents('./data/lovewall.txt', $update_str);}}}$i++; }if($ifok){$now = time()."#".$ip."#".$_G['gp_show'];fwrite($iptxt,$now."\n");}fclose($iptxt);

这篇关于PHP获取IP 文件写入与行修改的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

C#实现将XML数据自动化地写入Excel文件

《C#实现将XML数据自动化地写入Excel文件》在现代企业级应用中,数据处理与报表生成是核心环节,本文将深入探讨如何利用C#和一款优秀的库,将XML数据自动化地写入Excel文件,有需要的小伙伴可以... 目录理解XML数据结构与Excel的对应关系引入高效工具:使用Spire.XLS for .NETC

C#如何在Excel文档中获取分页信息

《C#如何在Excel文档中获取分页信息》在日常工作中,我们经常需要处理大量的Excel数据,本文将深入探讨如何利用Spire.XLSfor.NET,高效准确地获取Excel文档中的分页信息,包括水平... 目录理解Excel中的分页机制借助 Spire.XLS for .NET 获取分页信息为什么选择 S

springboot3.x使用@NacosValue无法获取配置信息的解决过程

《springboot3.x使用@NacosValue无法获取配置信息的解决过程》在SpringBoot3.x中升级Nacos依赖后,使用@NacosValue无法动态获取配置,通过引入SpringC... 目录一、python问题描述二、解决方案总结一、问题描述springboot从2android.x

MySQL底层文件的查看和修改方法

《MySQL底层文件的查看和修改方法》MySQL底层文件分为文本类(可安全查看/修改)和二进制类(禁止手动操作),以下按「查看方法、修改方法、风险管控三部分详细说明,所有操作均以Linux环境为例,需... 目录引言一、mysql 底层文件的查看方法1. 先定位核心文件路径(基础前提)2. 文本类文件(可直

使用Python将PDF表格自动提取并写入Word文档表格

《使用Python将PDF表格自动提取并写入Word文档表格》在实际办公与数据处理场景中,PDF文件里的表格往往无法直接复制到Word中,本文将介绍如何使用Python从PDF文件中提取表格数据,并将... 目录引言1. 加载 PDF 文件并准备 Word 文档2. 提取 PDF 表格并创建 Word 表格

springboot的controller中如何获取applicatim.yml的配置值

《springboot的controller中如何获取applicatim.yml的配置值》本文介绍了在SpringBoot的Controller中获取application.yml配置值的四种方式,... 目录1. 使用@Value注解(最常用)application.yml 配置Controller 中

Apache服务器IP自动跳转域名的问题及解决方案

《Apache服务器IP自动跳转域名的问题及解决方案》本教程将详细介绍如何通过Apache虚拟主机配置实现这一功能,并解决常见问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,... 目录​​问题背景​​解决方案​​方法 1:修改 httpd-vhosts.conf(推荐)​​步骤

Linux(centos7)虚拟机没有IP问题及解决方案

《Linux(centos7)虚拟机没有IP问题及解决方案》文章介绍了在CentOS7中配置虚拟机网络并使用Xshell连接虚拟机的步骤,首先,检查并配置网卡ens33的ONBOOT属性为yes,然后... 目录输入查看ZFhrxIP命令:ip addr查看,没有虚拟机IP修改ens33配置文件重启网络Xh

kingbase修改权限实现方式

《kingbase修改权限实现方式》该文章详细介绍了如何在数据库中创建用户并赋予其相应的权限,包括创建用户、回收默认权限、创建数据库、赋权数据库权限、创建只读用户以及回收权限等步骤... 目录前言使用步骤总结前言创建用户后对数据库对象的读写权限进行修改使用步骤1、创建用户create user cs

linux实现对.jar文件的配置文件进行修改

《linux实现对.jar文件的配置文件进行修改》文章讲述了如何使用Linux系统修改.jar文件的配置文件,包括进入文件夹、编辑文件、保存并退出编辑器,以及重新启动项目... 目录linux对.jar文件的配置文件进行修改第一步第二步 第三步第四步总结linux对.jar文件的配置文件进行修改第一步进