【问题标题】:PHP To Vote No More Then Once, How Do I Code This Within My Code?PHP 不再投票一次,我如何在我的代码中编写代码?
【发布时间】:2012-02-29 01:36:30
【问题描述】:

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

您可能会注意到,底部有一个链接,上面写着“现在投票”。这允许用户去投票。我怎么可能改变这个代码来显示/隐藏这个链接,这取决于用户是否投票。

我的数据库表如下所示:

选举:eelection_id、name_of_election、日期、party1、party2、party3、状态。

public:名字、姓氏、地址、邮政编码、ni、ref、active。

投票:vote_id、election_id、ni、政党

用户使用唯一的 ni 和 ref 编号登录。我有一个注册用户 ni 号码的会话。投票进入投票表。

我希望这篇文章比我的其他文章更清晰。

提前感谢您的帮助。

【问题讨论】:

  • 有什么特别的问题吗?
  • 我引用了我的第一篇文章:“...我如何根据用户是否投票来更改此代码以显示/隐藏此链接。”

标签: php mysql mysql-error-1064


【解决方案1】:

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

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

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

  • 记录来自 ips 的投票。将每个 ip 视为单个用户,从而在数据库中对其进行跟踪。如果某个 ip 已经投票,则隐藏该链接。请记住,用户可以从多台计算机投票,也只有一个来自给定 IP 的用户可以投票。因此,一个房子、公司或学校可能只能根据他们拥有的 ips 数量投票几次。


看看你是如何拥有用户帐户的,你会做一个查询,如检查函数名称并确保转义

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{
}

【讨论】:

  • 首先,用户确实有帐户。正如我在第一篇文章中提到的,用户使用他们唯一的 ni 号和 ref 号登录。然后将其存储在会话中,然后将 ni 编号与投票表中的投票一起提交。我只是在努力编写代码以隐藏“立即投票”链接。
  • 我把这段代码放在哪里?在我上面提供给您的代码之前还是之后?
  • @Moehma Burhan - 在根据需要更改变量名称以使其工作之后,您将在顶部包含选择内容。您要在链接周围添加的 if 语句。
猜你喜欢
  • 2017-10-13
  • 1970-01-01
  • 2017-05-07
  • 2022-08-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多