php建设的网站如何获得真实IP地址及30秒内多次提交表单无效呢?近期同一个本地客户做一个竞价网站页面,在页面的下方有个提交表单的功能,客户要求,
防止同IP地址恶意下单功能,我们技术人员花费很多的功夫 终于整理出了如何获得真实IP地址及30秒内多次提交表单无效的问题,也就是说我们解决了客户说的防止同IP地址恶意下单的功能,下面我贴出来给大空学习下。
<?php
function get_real_ip()
{
$ip=FALSE;
//客户端IP 或 NONE
if(!empty($_SERVER["HTTP_CLIENT_IP"])){
$ip = $_SERVER["HTTP_CLIENT_IP"];
}
//多重代理服务器下的客户端真实IP地址(可能伪造),如果没有使用代理,此字段为空
if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$ips = explode (", ", $_SERVER['HTTP_X_FORWARDED_FOR']);
if ($ip) { array_unshift($ips, $ip); $ip = FALSE; }
for ($i = 0; $i < count($ips); $i++) {
if (!eregi ("^(10│172.16│192.168).", $ips[$i])) {
$ip = $ips[$i];
break;
}
}
}
//客户端IP 或 (最后一个)代理服务器 IP
return ($ip ? $ip : $_SERVER['REMOTE_ADDR']);
}
function test_input($data) {
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}
function show_message($message,$rurl=""){
echo "<div style='position: absolute;width:400px;height:auto;left:50%;top:50%;margin-left:-200px;margin-top:-100px;border:3px dashed #f00;font-size:14px;text-align:center;padding: 46px 0;'>".$message;
if(!empty($rurl)){
header("refresh:1;url=".$rurl);
}else{
echo "<script language=JavaScript> location.replace(location.href);</script>";
}
echo "</div>";
}
?><?php
require("../config.php");
$con = mysqli_connect($db['host'],$db['username'],$db['password'],$db['dbname'],$db['port']);
if (!$con) {
printf("Can't connect to MySQL Server. Errorcode: %s ", mysqli_connect_error());
exit;
}
$con->set_charset('utf8'); //设置查询结果编码
if ($_SERVER["REQUEST_METHOD"] == "POST") {
if (isset($_COOKIE['formFlag'])) {
exit('请不要重复提交');
}
// 处理数据
// 30秒内重复提交无效
setcookie('formFlag', time(), time() + 30);
if($_POST['action']=="add"){
数据库连接部分
show_message("添加成功!","68f23406c6cecf84.php");
exit();
}
}
mysqli_close($con);
?>