[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

留言

這個網誌中的熱門文章

超任 三國志3代,登入武將金手指

歐姆龍 HEM-7600T 評價,購買心得分享(打臉文)

年青人眼鏡評價(負評),辛酸血淚史分享文