Créer le fichier vote.php
Le front-end a demandé le vote à partir de l'arrière-plan .php, vote.php se connectera à la base de données et appellera les fonctions associées en fonction des paramètres reçus.
La fonction vote($type,$id,$ip) est utilisée pour effectuer une action de vote $type représente le parti votant, $id représente l'ID du sujet de vote et $ip représente celui de l'utilisateur. IP actuelle. Tout d'abord, en fonction de l'adresse IP actuelle de l'utilisateur, demandez si l'enregistrement IP actuel existe déjà dans la table des enregistrements de vote votes_ip. S'il existe, cela signifie que l'utilisateur a voté. Sinon, mettez à jour le nombre de votes pour le côté rouge ou le bleu. côté et écrivez l'enregistrement de vote de l'utilisateur actuel dans la table votes_ip pour éviter les votes répétés.
La fonction jsons($id) interroge le nombre de votes pour l'identifiant actuel, calcule la proportion et renvoie le format de données json pour l'appel frontal.
fonction get_client_ip() {
if (getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP") , "inconnu"))<?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);
}
?>