[PHP] 投票系統如何防使用者重覆投票
function get_real_ip(){
$ip=false;
if(!empty($_SERVER["HTTP_CLIENT_IP"])) {
$ip = $_SERVER["HTTP_CLIENT_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;
}
}
}
return ($ip ? $ip : $_SERVER['REMOTE_ADDR']);
}
2. 投票時,存到資料庫
$ip = get_real_ip(); // 取得真實 IP
if (!empty($ip)) { // 假使 真實 IP 存在,就檢查資料庫是否已有這個 IP
$sql = "select ip from ip_vote_pool where ip = '$ip'";
$result = mysql_query($sql) or die(mysql_error());
$arr = mysql_fetch_array($result);
if (!$arr) { // 如果沒有這個 IP,就存入資料庫,並允許投票
$sql = "insert into ip_vote_pool (ip, create_date) values ('$ip', now())";
mysql_query($sql) or die(mysql_error());
// 可以投票,投票的動作寫在這裡
} else {
// 告訴會員你己投票過
}
}
引用 http://tw.knowledge.yahoo.com/question/question?qid=1009031704242
$ip=false;
if(!empty($_SERVER["HTTP_CLIENT_IP"])) {
$ip = $_SERVER["HTTP_CLIENT_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;
}
}
}
return ($ip ? $ip : $_SERVER['REMOTE_ADDR']);
}
2. 投票時,存到資料庫
$ip = get_real_ip(); // 取得真實 IP
if (!empty($ip)) { // 假使 真實 IP 存在,就檢查資料庫是否已有這個 IP
$sql = "select ip from ip_vote_pool where ip = '$ip'";
$result = mysql_query($sql) or die(mysql_error());
$arr = mysql_fetch_array($result);
if (!$arr) { // 如果沒有這個 IP,就存入資料庫,並允許投票
$sql = "insert into ip_vote_pool (ip, create_date) values ('$ip', now())";
mysql_query($sql) or die(mysql_error());
// 可以投票,投票的動作寫在這裡
} else {
// 告訴會員你己投票過
}
}
引用 http://tw.knowledge.yahoo.com/question/question?qid=1009031704242
留言
張貼留言