vote.php 파일 만들기
프런트 엔드는 백그라운드 vote.php를 요청하고, vote.php는 데이터베이스에 연결하고 수신된 매개변수를 기반으로 관련 기능을 호출합니다.
vote($type,$id,$ip) 함수는 투표 작업을 수행하는 데 사용됩니다. $type은 투표 당사자를 나타내고 $id는 투표 주제의 ID를 나타내며 $ip는 사용자의 현재 IP를 나타냅니다. 먼저 사용자의 현재 IP를 기반으로 현재 IP 기록이 vote_ip에 이미 존재하는지 쿼리합니다. 존재하는 경우 해당 사용자가 투표했다는 의미입니다. 그렇지 않으면 빨간색 면 또는 파란색에 대한 투표 수를 업데이트합니다. 현재 사용자 투표 기록을 vote_ip 테이블에 기록하여 반복 투표를 방지합니다.
함수 jsons($id)는 현재 ID에 대한 투표 수를 쿼리하고, 비율을 계산하고, 프런트엔드 호출에 대한 json 데이터 형식을 반환합니다.
获取用户真实IP적 函数:get_client_ip()
vote.php完整代码
<?php header("Content-type:text/html;charset=utf-8"); $action = $_GET['action']; $id = 1; $ip = get_client_ip();//获取ip if($action=='red'){//红方投票 vote(1,$id,$ip); }elseif($action=='blue'){//蓝方投票 vote(0,$id,$ip); }else{ echo jsons($id); } function vote($type,$id,$ip){ $conn=mysqli_connect("localhost","root","root","vote"); $ip_sql="select ip from votes_ip where vid='$id' and ip='$ip'"; $que=mysqli_query($conn,$ip_sql); $count=mysqli_num_rows($que); 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; } mysqli_query($conn,$sql); $sql_in = "insert into votes_ip (vid,ip) values ('$id','$ip')"; $result = mysqli_query($conn,$sql_in); if($result > 0){ echo jsons($id); }else{ $arr['success'] = 0; $arr['msg'] = '操作失败,请重试'; echo json_encode($arr); } }else{ $arr['success'] = 0; $arr['msg'] = '已经投票过了'; echo json_encode($arr); } } function jsons($id){ $conn=mysqli_connect("localhost","root","root","vote"); $que_sql="select * from votes where id=".$id; $query = mysqli_query($conn,$que_sql); $row = mysqli_fetch_array($query); $red = $row['likes']; $blue = $row['unlikes']; $arr['success']=1; $arr['red'] = $red; $arr['blue'] = $blue; $red_percent = round($red/($red+$blue),3); $arr['red_percent'] = $red_percent; $arr['blue_percent'] = 1-$red_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); } ?>