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.
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.
$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.
$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"))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);
}
?>
- Recommandations de cours
- Téléchargement du didacticiel
-
AvancéTutoriel pratique sur la fonction de vote rouge et bleu jQuery
8755 Les gens regardent -
ÉlémentaireTutoriel Lua
23135 Les gens regardent -
ÉlémentaireTutoriel XSL-FO
8444 Les gens regardent -
ÉlémentaireManuel de référence chinois jQuery
34225 Les gens regardent -
ÉlémentaireTutoriel MongoDB
25065 Les gens regardent -
ÉlémentaireTutoriel Scala
13128 Les gens regardent -
ÉlémentaireManuel en ligne CSS
81585 Les gens regardent -
ÉlémentaireTutoriel SVG
12670 Les gens regardent -
ÉlémentaireManuel de référence chinois AngularJS
24116 Les gens regardent -
ÉlémentaireAller au manuel du didacticiel de langue
26874 Les gens regardent -
ÉlémentaireManuel chinois d'opération de commande Redis
57400 Les gens regardent -
ÉlémentaireTutoriel Python 3
87110 Les gens regardent
Les étudiants qui ont regardé ce cours apprennent également
- Parlons brièvement de la création d'une entreprise en PHP
- Introduction rapide au développement web front-end
- Développement pratique à grande échelle par Tianlongbabu du cadre MVC version Mini imitant le site Web de l'encyclopédie des choses embarrassantes
- Premiers pas avec le développement pratique PHP : création rapide de PHP [Small Business Forum]
- Vérification de connexion et forum de discussion classique
- Collecte de connaissances sur les réseaux informatiques
- Démarrage rapide de la version complète de Node.JS
- Le cours front-end qui vous comprend le mieux : HTML5/CSS3/ES6/NPM/Vue/...[Original]
- Écrivez votre propre framework PHP MVC (40 chapitres en profondeur/gros détails/à lire absolument pour que les débutants progressent)