ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

php-具有IP的每日投票系统

2019-11-20 21:14:53  阅读:209  来源: 互联网

标签:voting web mysql php database


大家好!

我知道使用IP地址不是投票系统的最佳方法,但就我而言,这很好!

我想要实现的目标:管理员可以为民意调查设定一个问题.用户回答问题,并可以每天使用其IP地址为每个答案投票.

到目前为止,我所拥有的:管理员可以为民意调查设定一个问题.用户可以使用其IP地址回答一次该问题. (您只能为每个IP地址投票一次)

数据库:
表格选项:ID和名称这是保存问卷调查答案的表格.表投票者:id,option_id,ip,今天和数字这是保存投票者ip地址,他要投票的答案,投票日期(尚未工作)以及用于获取总数的数字的表的选票.

我有3个php文件:muziek.php,insertM.php和vote.php

muziek.php显示了民意调查的问题和答案.

insertM.php允许用户插入民意测验的答案.

投票.php投票投票.
人们只能使用一次IP地址,现在我要这样做,以便人们可以每天使用其IP地址.

投票.php:

private function _alreadyVote($ip,$today)
        {
            $sql = "SELECT * FROM ".$this->_voterTable." WHERE ip='".$ip."' AND DATE(today) = CURDATE()";
            $result = $this->_query($sql);
            return sizeof($result)>0;
        }

        //public functions
        public function vote($optionId)
        {           
            $ip  = $_SERVER['REMOTE_ADDR'];
            $today = date('Y-m-d');

                if(!$this->_alreadyVote($ip,$today)){

                $sql ='INSERT INTO '.$this->_voterTable.' (id,option_id,ip,today) '.' VALUES(NULL,"'.mysql_real_escape_string($optionId).'","'.mysql_real_escape_string($ip).'","'.mysql_real_escape_string($today).'")';
mysqli_query($conn, $sql);

                $result = mysql_query($sql,$this->_con);
                if(!$result){
                    die('unable to insert'. mysql_error());
                }
            }        
        }

我需要跟踪日期并检查当前日期是否等于投票用户数据库中的日期.如果不同,则用户应该能够再次投票,并且将设置一个新日期.

谢谢阅读!
请问我是否要我发布更多代码.

解决方法:

执行这种查询以确定IP地址和当前日期的组合是否返回任何结果:

$sql = "SELECT COUNT(*) as rowCount FROM ".$this->_voterTable." WHERE ip='".$ip."' AND DATE(latestVoteDate) = CURDATE()";

如果返回行(或行数),则应拒绝“人员”投票的能力.如果不是这种情况,则可以进行投票.投票后,使用ip地址($ip)将行的LatestVoteDate更新为CURDATE().

$conn = mysqli_connect("localhost","my_user","my_password","my_db");
$query = mysqli_query( $conn,  $sql );
$data = mysqli_fetch_assoc( $query );

if($data['rowCount'] > 0)
{
   die("You are not allowed to vote");
}
else
{ 
   // Show the voting page or partial
}

然后,当实际发生表决操作时,将包含正确IP的行更新为当前日期:

$sql = "UPDATE ".$this->_voterTable." SET latestVoteDate = CURDATE() WHERE ip = '" . $ip . "';";
mysqli_query($conn, $sql);

标签:voting,web,mysql,php,database
来源: https://codeday.me/bug/20191120/2046937.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有