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
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
vote(0,$id,$ip);
}else{
echo jsons($id);
}
vote($type,$id,$ip) 함수는 투표 작업을 수행하는 데 사용됩니다. $type은 투표 당사자를 나타내고 $id는 투표 주제의 ID를 나타내며 $ip는 사용자의 현재 IP를 나타냅니다. 먼저 사용자의 현재 IP를 기반으로 현재 IP 기록이 vote_ip에 이미 존재하는지 쿼리합니다. 존재하는 경우 해당 사용자가 투표했다는 의미입니다. 그렇지 않으면 빨간색 면 또는 파란색에 대한 투표 수를 업데이트합니다. 현재 사용자 투표 기록을 vote_ip 테이블에 기록하여 반복 투표를 방지합니다.
function vote($type,$id,$ip){
$conn=mysqli_connect("localhost","root","root","vote");
$ip_sql=" vote_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 = "Update Votes Set Likes = Likes+1 Where ID =". $ ID "update votes set likes=unlikes+1 where id=" .$id;
}
mysqli_query($conn,$sql);
$sql_in = " vote_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=" vote_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 = "Update Votes Set Likes = Likes+1 Where ID =". $ ID "update votes set likes=unlikes+1 where id=" .$id;
}
mysqli_query($conn,$sql);
$sql_in = " vote_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 vote where id=".$id)
$row = mysql_fetch_array($query)
$red = $row['likes' ];
$row['unlikes'];
$arr['red'] = $red
$red_percent = round($red/($red+$blue),3);
$arr['red_percent'] = $red_percent;
$arr['blue_percent'] = 1-$red_percent; 아)
}
$query = mysql_query("select * from vote where id=".$id)
$row = mysql_fetch_array($query)
$red = $row['likes' ];
$row['unlikes'];
$arr['red'] = $red
$red_percent = round($red/($red+$blue),3);
$arr['red_percent'] = $red_percent;
$arr['blue_percent'] = 1-$red_percent; 아)
}
获取用户真实IP적 函数:get_client_ip()
function get_client_ip() {
if (getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP"), "알 수 없음"))
$ip = getenv( "HTTP_CLIENT_IP");
else
if (getenv("HTTP_X_FORWARDED_FOR") && strcasecmp(getenv("HTTP_X_FORWARDED_FOR"), "알 수 없음"))
$ip = getenv("HTTP_X_FORW ARDED_FOR");
else
if (getenv(" REMOTE_ADDR") && strcasecmp(getenv("REMOTE_ADDR"), "알 수 없음"))
$ip = getenv("REMOTE_ADDR");
else
if (isset ($_SERVER ['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR '] && strcasecmp($_SERVER['REMOTE_ADDR'], "알 수 없음"))
$ip = $_SERVER['REMOTE_ADDR'];
else
$ip = "알 수 없음";
반환($ip);
}
if (getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP"), "알 수 없음"))
$ip = getenv( "HTTP_CLIENT_IP");
else
if (getenv("HTTP_X_FORWARDED_FOR") && strcasecmp(getenv("HTTP_X_FORWARDED_FOR"), "알 수 없음"))
$ip = getenv("HTTP_X_FORW ARDED_FOR");
else
if (getenv(" REMOTE_ADDR") && strcasecmp(getenv("REMOTE_ADDR"), "알 수 없음"))
$ip = getenv("REMOTE_ADDR");
else
if (isset ($_SERVER ['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR '] && strcasecmp($_SERVER['REMOTE_ADDR'], "알 수 없음"))
$ip = $_SERVER['REMOTE_ADDR'];
else
$ip = "알 수 없음";
반환($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 기업 모방 웹사이트 튜토리얼
3048명이 시청하고 있습니다. -
초등학교WordPress에 기초가 전혀 없는 초보자는 개인 블로그와 기업 웹 사이트를 구축합니다.
6743명이 시청하고 있습니다. -
초등학교궁극의 CMS 제로 기반 웹사이트 구축 지침 영상
2724명이 시청하고 있습니다. -
초등학교프론트엔드 프로젝트 - Shangyou [HTML/CSS/JS 기술 종합실습]
3117명이 시청하고 있습니다. -
중급Vue3.0 from 0을 통해 범용 백엔드 관리 시스템 프로젝트 실습 구축
5351명이 시청하고 있습니다. -
초등학교제로 기반 프론트엔드 과정 [Vue 고급 학습 및 실무 적용]
2821명이 시청하고 있습니다. -
초등학교웹 프론트엔드 튜토리얼 [HTML5+CSS3+JS]
3506명이 시청하고 있습니다. -
초등학교apipost에 대한 빠른 소개
2161명이 시청하고 있습니다. -
중급Vue3+TypeScript 실무 튜토리얼-엔터프라이즈 수준 프로젝트 실습
3208명이 시청하고 있습니다. -
초등학교PHP로 사업을 시작하는 방법에 대해 간단히 이야기해 보겠습니다.
17423명이 시청하고 있습니다. -
중급VUE 전자상거래 프로젝트(프론트엔드 & 백엔드 듀얼 프로젝트 실전)
3828명이 시청하고 있습니다. -
초등학교Apipost 실무 응용 [api, 인터페이스, 자동화 테스트, 모의]
2265명이 시청하고 있습니다.
현재 코스웨어를 다운로드할 수 없습니다. 현재 직원들이 정리하고 있습니다. 앞으로도 본 강좌에 많은 관심 부탁드립니다~
이 강좌를 시청한 학생들도 학습하고 있습니다.
- PHP로 사업을 시작하는 방법에 대해 간단히 이야기해 보겠습니다.
- 웹 프론트 엔드 개발에 대한 빠른 소개
- 민망한 물건 백과사전 사이트를 모방한 Mini 버전 MVC 프레임워크의 대규모 실용 Tianlongbabu 개발
- PHP 실용 개발 시작하기: 빠른 PHP 생성 [중소기업 포럼]
- 로그인 인증 및 클래식 게시판
- 컴퓨터 네트워크 지식 수집
- 빠른 시작 Node.JS 정식 버전
- 당신을 가장 잘 이해하는 프론트엔드 강좌: HTML5/CSS3/ES6/NPM/Vue/...[원본]
- 자신만의 PHP MVC 프레임워크 작성(깊이 있는 40개 장/자세한 내용/초보자가 발전하려면 읽어야 함)