PHP实现顶和踩投票功能,有IP判断防止重复投票
XML/HTML Code
- <div class="demo">
- <div class="digg">
- <div id="dig_up" class="digup">
- <span id="num_up"><?php echo $like;?></span>
- <p>很好,很强大!</p>
- <div id="bar_up" class="bar"><span style="width:<?php echo $percent_like;?>%"></span><i><?php echo $percent_like;?>%</i></div>
- </div>
- <div id="dig_down" class="digdown">
- <span id="num_down"><?php echo $unlike;?></span>
- <p>太差劲了!</p>
- <div id="bar_down" class="bar"><span style="width:<?php echo $percent_unlike;?>%"></span><i><?php echo $percent_unlike;?>%</i></div>
- </div>
- <div id="msg"></div>
- </div>
- </div>
JavaScript Code
- <script type="text/javascript">
- $(function() {
- $("#dig_up").hover(function() {
- $(this).addClass("digup_on");
- }, function() {
- $(this).removeClass("digup_on");
- });
- $("#dig_down").hover(function() {
- $(this).addClass("digdown_on");
- }, function() {
- $(this).removeClass("digdown_on");
- });
- getdata("ajax.php", 1);
- $("#dig_up").click(function() {
- getdata("ajax.php?action=like", 1);
- });
- $("#dig_down").click(function() {
- getdata("ajax.php?action=unlike", 1);
- });
- });
- function getdata(url, sid) {
- $.getJSON(url, {id: sid}, function(data) {
- if (data.success == 1) {
- $("#num_up").html(data.like);
- $("#bar_up span").css("width", data.like_percent);
- $("#bar_up i").html(data.like_percent);
- $("#num_down").html(data.unlike);
- $("#bar_down span").css("width", data.unlike_percent);
- $("#bar_down i").html(data.unlike_percent);
- } else {
- $("#msg").html(data.msg).show().css({'opacity': 1, 'top': '40px'}).animate({top: '-50px', opacity: 0}, "slow");
- }
- });
- }
- </script>
ajax.php
PHP Code
- require('../../conn.php');
- $action = $_GET['action'];
- $id = 1;
- $ip = get_client_ip();
- if ($action == 'like') {
- likes(1, $id, $ip);
- } elseif ($action == 'unlike') {
- likes(0, $id, $ip);
- } else {
- echo jsons($id);
- }
- function likes($type, $id, $ip) {
- $ip_sql = mysql_query("select ip from votes_ip where vid='$id' and ip='$ip'");
- $count = mysql_num_rows($ip_sql);
- if ($count == 0) {//还没有顶过
- if ($type == 1) {//顶
- $sql = "update votes set likes=likes+1 where id=" . $id;
- } else {//踩
- $sql = "update votes set unlikes=unlikes+1 where id=" . $id;
- }
- mysql_query($sql);
- $sql_in = "insert into votes_ip (vid,ip) values ('$id','$ip')";
- mysql_query($sql_in);
- echo jsons($id);
- } else {
- $msg = $type == 1 ? '您已经顶过了' : '您已经踩过了';
- $arr['success'] = 0;
- $arr['msg'] = $msg;
- echo json_encode($arr);
- }
- }
- function jsons($id) {
- $query = mysql_query("select * from votes where id=" . $id);
- $row = mysql_fetch_array($query);
- $like = $row['likes'];
- $unlike = $row['unlikes'];
- $arr['success'] = 1;
- $arr['like'] = $like;
- $arr['unlike'] = $unlike;
- $like_percent = round($like / ($like + $unlike), 3) * 100;
- $arr['like_percent'] = $like_percent . '%';
- $arr['unlike_percent'] = (100 - $like_percent) . '%';
- return json_encode($arr);
- }
- //获取用户真实IP
- function get_client_ip() {
- if (getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP"), "unknown"))
- $ip = getenv("HTTP_CLIENT_IP");
- else
- if (getenv("HTTP_X_FORWARDED_FOR") && strcasecmp(getenv("HTTP_X_FORWARDED_FOR"), "unknown"))
- $ip = getenv("HTTP_X_FORWARDED_FOR");
- else
- if (getenv("REMOTE_ADDR") && strcasecmp(getenv("REMOTE_ADDR"), "unknown"))
- $ip = getenv("REMOTE_ADDR");
- else
- if (isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], "unknown"))
- $ip = $_SERVER['REMOTE_ADDR'];
- else
- $ip = "unknown";
- return ($ip);
- }
原文地址:http://www.freejs.net/article_jquerywenzi_647.html