我有以下php代码,用于选择当前记录在mysql数据库中的所有选择:

    <?php

$result = mysql_query("SELECT * FROM elections WHERE status = 'in_progress'")

or die(mysql_error());

if (mysql_num_rows($result) == 0) {

    echo '<h5>This Election Does Not Exist Anymore</h5><hr> ';
    } else {

while($info = mysql_fetch_array($result))
{
        echo "<tr>";
        echo "<td>" . $info['name_of_election']. "</td>";
        echo "<br/><br/><td>" . $info['date']. ' '. $info['month']. ' ' . $info['year']. "</td>";
        echo "<br/><br/><td>" . '<a href="vote.php?election=' . $info['election_id'] . '">Vote Now</a>' . "</td>";
        echo '<hr>';
}
    }
  ?>

正如你可能注意到的,在底部有一个链接,上面写着“立即投票”。这允许用户去投票。根据用户是否投了票,如何更改此代码以显示/隐藏此链接。
我的数据库表如下所示:
选举:选举id,选举名称,日期,第1部分,第2部分,第3部分,状态。
公开:名字,姓氏,地址,邮政编码,ni,ref,有效。
投票:投票,选举,政党
用户登录时使用的ni和ref号都是唯一的。我有一个会话,它注册用户的ni号。投出的选票进入投票桌。
我希望这篇文章比我的另一篇文章清楚得多。
提前谢谢你的帮助。

最佳答案

有三种方法可以让你这么做,它们很快就会出现在你的脑海中,并且有自己的注意事项。
用户帐户。允许用户创建帐户并要求他们登录投票。然后,您可以创建一个表来跟踪用户是否投票。这样您就可以强制一个用户帐户只投票一次。
会话和cookies。在用户投票和读取cookie时设置cookie,以查看用户是否投票并决定是否显示链接。请记住,用户可以删除这些cookie,从而可以再次投票。
记录来自IP的投票。将每个ip视为单个用户,并在数据库中跟踪它。如果ip已投票,则隐藏链接。请记住,用户可以从多台计算机上进行投票,也只有来自给定ip的一个用户可以进行投票。因此,一所房子、公司或学校可能只能根据其发起IP的数量进行几次投票。
考虑到你是如何拥有用户帐户的,你需要做一个查询,比如检查函数名,并确保转义

SELECT COUNT(*) as voted
FROM votes
JOIN elections USING (election_id)
JOIN public using (ni)
WHERE election_id = mysql_escape( $electionId ),
AND public.ni = mysql_escape( $userId );

然后使用结果执行以下操作:
//User has voted
if ( $result > 0 ){
}
//Else they havn't
else{
}

关于php - PHP不再投票一次,如何在我的代码中进行编码?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9492415/

10-13 09:49