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
-
ÉlémentaireTutoriel de site Web d'imitation d'entreprise Imperial CMS
3048 Les gens regardent -
ÉlémentaireLes débutants sans aucune base dans WordPress créent des blogs personnels et des sites Web d'entreprise
6743 Les gens regardent -
ÉlémentaireVidéo d'instructions sur la création de sites Web à base zéro Ultimate CMS
2724 Les gens regardent -
ÉlémentaireProjet front-end-Shangyou [Pratique complète de la technologie HTML/CSS/JS]
3117 Les gens regardent -
IntermédiaireVue3.0 de 0 pour créer une pratique de projet de système de gestion backend universel
5351 Les gens regardent -
ÉlémentaireCours frontal base zéro [Vue apprentissage avancé et application pratique]
2821 Les gens regardent -
ÉlémentaireTutoriel WEB front-end [HTML5+CSS3+JS]
3506 Les gens regardent -
ÉlémentaireIntroduction rapide à apipost
2161 Les gens regardent -
IntermédiaireTutoriel pratique Vue3+TypeScript au niveau de l'entreprise
3208 Les gens regardent -
ÉlémentaireParlons brièvement de la création d'une entreprise en PHP
17423 Les gens regardent -
IntermédiaireProjet de commerce électronique VUE (combat réel de projet double front-end et back-end)
3828 Les gens regardent -
ÉlémentaireApplication pratique Apipost [api, interface, tests automatisés, mock]
2265 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)