php 获取IP以分钟限制提交次数,适用于验证码获取过于频繁
public function limitSendTimes()
{
header('Content-Type:text/html;charset=UTF-8');
session_start();
$limit = 2;
$ip = $this->getip();
$time = date('Y-m-d H:i');
if (isset($_SESSION[$time])) {
$ipnum = $this->renum($_SESSION[$time], $ip);
} else {
$ipnum = 0;
}
if ($ipnum >= $limit) {
exit("一分钟内获取验证码{$limit}次了,请求过于频繁,");
}
if (isset($_REQUEST['url'])) {
$url = $_REQUEST['url'];
} else {
$url = 0;
}
$_SESSION[$time][] = $ip;
exit("提交成功");
}
private function getip()
{
if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
$ip = $_SERVER['HTTP_CLIENT_IP'];
} elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
} else {
$ip = $_SERVER['REMOTE_ADDR'];
}
return $ip;
}
private function renum($array, $get)
{
$n = 0;
foreach ($array as $val) {
if ($val == $get) {
$n++;
}
}
return $n;
}