gpt4 book ai didi

PHP 不再投票一次,我如何在我的代码中对此进行编码?

转载 作者:行者123 更新时间:2023-11-29 02:04:09 24 4
gpt4 key购买 nike

我有以下 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>';
}
}
?>

您可能会注意到,底部有一个链接,上面写着“立即投票”。这允许用户去投票。我怎样才能根据用户是否投票来更改此代码以显示/隐藏此链接。

我的数据库表是这样的:

选举:election_id, name_of_election, date, party1, party2, party3, status.

公共(public):名字、姓氏、地址、邮政编码、ni、ref、事件。

投票:vote_id, election_id, ni, party

用户使用他们的 ni 和 ref 号码登录,这些号码都是唯一的。我有一个注册用户 ni 号码的 session 。所投选票进入投票表。

我希望这篇文章比我的另一篇文章更清楚。

在此先感谢您的帮助。

最佳答案

您可以通过 3 种方法来完成此操作,这些方法很快就会浮现在脑海中,但都有自己的注意事项。

  • 用户帐户。允许用户创建帐户并要求他们登录才能投票。然后您可以创建一个表来跟踪用户是否投票。通过这种方式,您可以强制一个用户帐户只能投票一次。

  • session 和 cookie。每当用户投票时设置一个 cookie 并读取该 cookie 以查看用户是否已投票并决定是否要显示链接。请记住,用户可以删除那里的 cookie,从而能够再次投票。

  • 记录来自 ips 的投票。将每个 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 不再投票一次,我如何在我的代码中对此进行编码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9492415/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com