PHP 開発の赤と青の投票関数チュートリアル PHP
vote.phpファイルを作成する
フロントエンドはバックグラウンドのvote.phpをリクエストし、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);
}
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);
}
関数 vote($type,$id,$ip) は、投票アクションを行うために使用されます。 $type は投票者を表し、$id は投票トピックの ID を表し、$ip はユーザーの現在の IP を表します。まず、ユーザーの現在の IP に基づいて、現在の IP レコードが投票レコード テーブル votes_ip に存在するかどうかを照会します。存在する場合は、ユーザーが投票したことを意味します。それ以外の場合は、赤側または青側の投票数を更新します。側で、現在のユーザー投票レコードを votes_ip テーブルに書き込み、投票が繰り返されるのを防ぎます。
function vote($type,$id,$ip){
$conn=mysqli_connect("localhost","root","root","vote");
$ip_sql="votes_ip から ip を選択vid='$id' および ip='$ip'";
$que=mysqli_query($conn,$ip_sql);
$count=mysqli_num_rows($que);
if($count==0){//投票なし
if ($ Type == 1) {// Red Fang
$ SQL = "投票を更新 = LIKES+1 WHERE ID =" "投票を更新 = 似ていないもの +1 where id= .$id;
}
mysqli_query($conn,$sql);
$sql_in = "votes_ip (vid,ip) 値に挿入 ('$id', '$ip')";
$result = mysqli_query($conn,$sql_in);
if($result > 0){
echo jsons($id);
}else{
$arr['success'] = 0;
$arr[ 'msg'] = 'すでに投票済み';
echo json_encode($arr);
}
}
学び続ける
$conn=mysqli_connect("localhost","root","root","vote");
$ip_sql="votes_ip から ip を選択vid='$id' および ip='$ip'";
$que=mysqli_query($conn,$ip_sql);
$count=mysqli_num_rows($que);
if($count==0){//投票なし
if ($ Type == 1) {// Red Fang
$ SQL = "投票を更新 = LIKES+1 WHERE ID =" "投票を更新 = 似ていないもの +1 where id= .$id;
}
mysqli_query($conn,$sql);
$sql_in = "votes_ip (vid,ip) 値に挿入 ('$id', '$ip')";
$result = mysqli_query($conn,$sql_in);
if($result > 0){
echo jsons($id);
}else{
$arr['success'] = 0;
$arr[ 'msg'] = 'すでに投票済み';
echo json_encode($arr);
}
}
関数 jsons($id) は、現在の ID の投票数をクエリし、割合を計算して、フロントエンド呼び出しの JSON データ形式を返します。
function jsons($id){
$query = mysql_query("select * from votes where id=".$id);
$row = mysql_fetch_array($query);
$red = $row['likes'; ];
$blue = $row['success']=1;
$arr['blue'] = $blue; $red_percent =round($red/($red+$blue),3);
$arr['red_percent'] = $red_percent;
return json_encode;ああ);
}
🎷取用户真实IPの関数:get_client_ip()
$query = mysql_query("select * from votes where id=".$id);
$row = mysql_fetch_array($query);
$red = $row['likes'; ];
$blue = $row['success']=1;
$arr['blue'] = $blue; $red_percent =round($red/($red+$blue),3);
$arr['red_percent'] = $red_percent;
return json_encode;ああ);
}
🎷取用户真实IPの関数:get_client_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_FORWARD) ED_FOR");
else
if (getenv(" REMOTE_ADDR") && strcasecmp(getenv("REMOTE_ADDR"), "unknown"))
$ip = getenv("REMOTE_ADDR");
else
if (isset ($_SER) VER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR' '] && strcasecmp($_SERVER['REMOTE_ADDR'], "unknown"))
$ip = $_SERVER['REMOTE_ADDR'];
else
$ip = "不明";
return ($ip);
}
$ip = getenv( "HTTP_CLIENT_IP");
else
if (getenv("HTTP_X_FORWARDED_FOR") && strcasecmp(getenv("HTTP_X_FORWARDED_FOR"), "unknown"))
$ip = getenv("HTTP_X_FORWARD) ED_FOR");
else
if (getenv(" REMOTE_ADDR") && strcasecmp(getenv("REMOTE_ADDR"), "unknown"))
$ip = getenv("REMOTE_ADDR");
else
if (isset ($_SER) VER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR' '] && strcasecmp($_SERVER['REMOTE_ADDR'], "unknown"))
$ip = $_SERVER['REMOTE_ADDR'];
else
$ip = "不明";
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); } ?>
||
<?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);
}
?>
- おすすめコース
- コースウェアのダウンロード
-
初級Imperial CMS エンタープライズ模倣 Web サイトのチュートリアル
3048 人が視聴しています -
初級WordPress の基礎がまったくない初心者が個人のブログや企業 Web サイトを構築する
6743 人が視聴しています -
初級究極のCMSゼロベースWebサイト構築解説ビデオ
2724 人が視聴しています -
初級フロントエンドプロジェクト-Shangyou [HTML/CSS/JS技術総合演習]
3117 人が視聴しています -
中級Vue3.0 を 0 から構築してユニバーサル バックエンド管理システム プロジェクトの実践を構築
5351 人が視聴しています -
初級ゼロベースフロントエンド講座【Vueの高度な学習と実践】
2821 人が視聴しています -
初級WEBフロントエンドチュートリアル【HTML5+CSS3+JS】
3506 人が視聴しています -
初級apipost の簡単な紹介
2161 人が視聴しています -
中級Vue3+TypeScript 実践チュートリアル - エンタープライズレベルのプロジェクト演習
3208 人が視聴しています -
初級PHP でビジネスを始めることについて簡単に説明しましょう
17423 人が視聴しています -
中級VUE eコマースプロジェクト(フロントエンド&バックエンドのデュアルプロジェクト実戦)
3828 人が視聴しています -
初級Apipost 実用化 [API、インターフェース、自動テスト、モック]
2265 人が視聴しています
現時点ではコースウェアはダウンロードできません。現在スタッフが整理中です。今後もこのコースにもっと注目してください〜
このコースを視聴した生徒はこちらも学んでいます