重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
这个用写文件的方式保留初始时间,等循环一次之后再重置
创新互联建站咨询热线:18982081108,为您提供成都网站建设网页设计及定制高端网站建设服务,创新互联建站网页制作领域十余年,包括发电机租赁等多个方面拥有多年的网站运维经验,选择创新互联建站,为网站保驾护航!
$file="a.txt";
if(!file_exists($file))
{
$handle=fopen('a.txt','w');
fwrite($handle,time());
fclose($handle);
}
$start=file_get_contents($file);
$time=time();
$text = array('a','b','c','d','e');
$index=0;
$dif=$time-$start;
if($dif5*60 and $dif10*60)
{
$index=1;
}
elseif($dif10*60 and $dif15*60)
{
$index=2;
}
elseif($dif15*60 and $dif20*60)
{
$index=3;
}
elseif($dif20*60 and $dif25*60)
{
$index=4;
}
elseif($dif25*60)
{
$handle=fopen('a.txt','w');
fwrite($handle,time());
fclose($handle);
$index=0;
}
echo $text[$index];
这个是利用session来判断:
?php
define('TIME_OUT', 30); //定义重复操作最短的允许时间,单位秒
@session_start();
$time = time();
if( isset($_SESSION['time']) )
{
if( $time - $_SESSION['time'] = TIME_OUT ) //判断超时
{
echo 'script type=text/javascriptalert("在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;
}
用js的setInterval写一个定时器,每隔5分钟,使用ajax请求一次数据,
ignore_user_abort();// 让浏览器断开也可以执行
set_time_limit(30);// 0 表示无限的执行下去,PHP 系统默认为 30s
echo 'Testing connection handling in PHP';
while(1)
{
// Did the connection fail?
// if(connection_status() != CONNECTION_NORMAL)
// {
// break;
// }
$filename = 'key.txt';
$somecontent = date("Y-m-d H:m:s") . "\n";
// 首先我们要确定文件存在并且可写。
if (is_writable($filename)) {
// 在这个例子里,我们将使用添加模式打开$filename,
// 因此,文件指针将会在文件的开头,
// 那就是当我们使用fwrite()的时候,$somecontent将要写入的地方。
if (!$handle = fopen($filename, 'a')) {
echo "不能打开文件 $filename";
exit;
}
// 将$somecontent写入到我们打开的文件中。
if (fwrite($handle, $somecontent) === FALSE) {
echo "不能写入到文件 $filename";
exit;
}
echo "成功地将 $somecontent 写入到文件$filename";
fclose($handle);
} else {
echo "文件 $filename 不可写";
}
// Sleep for 10 seconds,等 10s 再执行
sleep(5);
}
你可以参考一下,我以前的一段代码