求PHP写一个控制同IP 5分钟内只允许提交一次信息的代码

5分钟内打开post.php页面提示您的IP5分钟之内只提交一次请5分钟后再来发布信息... 5分钟内 打开 post.php 页面 提示 您的IP 5分钟之内只提交一次 请5分钟后再来发布信息 展开
 我来答
zhiyuanzy
推荐于2018-04-13 · 超过25用户采纳过TA的回答
知道答主
回答量:46
采纳率:0%
帮助的人:50.3万
展开全部
这个是利用session来判断:
<?php
define('TIME_OUT', 30); //定义重复操作最短的允许时间,单位秒
@session_start();
$time = time();

if( isset($_SESSION['time']) )
{
if( $time - $_SESSION['time'] <= TIME_OUT ) //判断超时
{
echo '<script type=text/javascript>alert("在30秒内只能访问一次!");</script>';
exit();
}
}
$_SESSION['time'] = $time;

echo "这还是正常!";
?>

你要用根据IP的话,可以把IP及访问时间存在数据库里面,在程序的开头先得到客户IP,然后再到数据库里面查询一条这个IP的最后访问记录,没有则添加,如果数据库里面保存的最后访问时间与当前时间的差值小于你规定的值,那就可以提示用户访问过于频繁。

下面给你发个获取IP的参考函数

function ClientIP()
{
$realip = "";
if (isset($_SERVER))
{
// 如果$_SERVER['HTTP_X_FORWARDED_FOR']有值表明客户端通过代理上网
if (isset($_SERVER['HTTP_X_FORWARDED_FOR']))
{
$ip_arr = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);
/* 取X-Forwarded-For中第一个非unknown的有效IP字符串 */
foreach ($ip_arr as $ip)
{
$ip = trim($ip);
if ($ip != 'unknown')
{
$realip = $ip;
break;
}
}
} elseif (isset($_SERVER['HTTP_CLIENT_IP'])) {
$realip = $_SERVER['HTTP_CLIENT_IP'];
} else {
if (isset($_SERVER['REMOTE_ADDR']))
$realip = $_SERVER['REMOTE_ADDR'];
else
$realip = '0.0.0.0';
}
} else {
if (getenv('HTTP_X_FORWARDED_FOR')) // 如果getenv('HTTP_X_FORWARDED_FOR')非空取其值作为真实IP
$realip = getenv('HTTP_X_FORWARDED_FOR');
elseif (getenv('HTTP_CLIENT_IP')) // 如果getenv('HTTP_CLIENT_IP')非空取其值作为真实IP
$realip = getenv('HTTP_CLIENT_IP');
else
$realip = getenv('REMOTE_ADDR');
}

preg_match("/[\d\.]{7,15}/", $realip, $onlineip);
$realip = !empty($onlineip[0]) ? $onlineip[0] : '0.0.0.0';
return $realip;
}
Storm代理
2023-07-25 广告
StormProxies是一家提供动态代理服务器服务的企业,旨在帮助用户更好地管理网络访问和安全。以下是一些关于StormProxies的IP动态代理服务的特点:1. 高匿名性:StormProxies的动态代理服务器具有高匿名性,可以有效... 点击进入详情页
本回答由Storm代理提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式