Tutoriel sur la...LOGIN

Tutoriel sur la fonction de vote rouge et bleu du développement PHP PHP

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.


<?php
header("Content-type:text/html;charset=utf-8");
$action = $_GET['action'];
$id = 1;
$ip = get_client_ip();//Obtenir l'ip

if($action=='red'){//red Vote latéral
vote(1,$id,$ip);
}elseif($action=='blue'){//Vote côté bleu
vote(0,$id,$ip);
}else{
echo jsons($id);
}

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.

function vote($type,$id,$ip){

$conn=mysqli_connect("localhost","root","root","vote");
$ip_sql="sélectionnez l'ip depuis votes_ip où vid='$id' et ip='$ip'";
$que=mysqli_query($conn,$ip_sql);
$count=mysqli_num_rows( $que);
if($count==0){//Aucun vote pour l'instant
if($type==1){//Côté rouge
$sql = "update votes set likes=likes +1 où id=".$id;
                                                                                                                                mysqli_query($conn,$sql);

$sql_in = "insérer dans les valeurs votes_ip (vid,ip) ($'id',' $ip')";
$result = mysqli_query($ conn,$sql_in);
if($result > 0){
echo jsons($id);
}else{
$arr['success'] = 0;
$arr['msg'] = 'L'opération a échoué, veuillez réessayer'
                                                                                                                                                                                                                                                 $arr['
$arr['msg'] = 'Déjà voté';
echo json_encode($arr);
}
}


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.

function jsons($id){
$query = mysql_query("select * from voteswhere id=".$id);
$row = mysql_fetch_array($query);
$red = $row['j'aime'];
$blue = $row['je n'aime pas'];
$arr['success']=1; ] = $rouge;
$arr['bleu'] = $bleu;
$red_percent = rond($rouge/($rouge+$bleu),3
$arr['red_percent'] = $red_percent;
$arr['blue_percent'] = 1-$red_percent;

return json_encode($arr)


fonction get_client_ip() {

   if (getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP") , "inconnu"))
       $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'], "inconnu"))
                   $ip = $_SERVER['REMOTE_ADDR'];
              else
                  $ip = "inconnu";
   return ($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);
}
?>


section suivante
<?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); } ?>
soumettreRéinitialiser le code
chapitredidacticiel
    Aucun