如何限制注册用户再次尝试投票

时间:2017-01-24 03:34:25

标签: php

我是php编码和网站设计的新手。

我正在尝试开发一个在线投票系统,只允许注册用户投票。我已经完成了所有工作并且工作正常,但我需要的帮助是在用户注销后,如何让用户无法再次登录并投票两次?或者我如何才能第二次重定向用户?

2 个答案:

答案 0 :(得分:0)

您可以通过获取数据库表中的字段来管理用户。通过在登录时在该字段上应用条件,您将能够限制已经投票的用户。

答案 1 :(得分:0)

如果你真的想过你会看到它有多容易,那就不难实现。

您的用户表必须具有唯一ID才能让用户识别用户,然后您的表列上还需要有一个枚举字段,您可以将其命名为votingstatus并将其默认值设置为a,然后,当用户成功投票时,您将该字段更新为b,然后您可以查看votingstatus = b所有用户的表单控件,这样您就不会允许{{1}投票的状态。当用户登录时,您需要检查b用户是否votingstatus然后允许登录,如果其a返回适当的消息并拒绝访问。

示例表

b

投票的示例

CREATE TABLE `voters` (
  `voter_id` int(6) NOT NULL,
  `id_number` varchar(255) NOT NULL,
  `firstname` varchar(255) DEFAULT NULL,
  `lastname` varchar(255) DEFAULT NULL,
  `email` varchar(255) NOT NULL,
  `voting_status` enum('a','b') DEFAULT 'a',
  `password` varchar(255) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

登录:

 <?php
try {


    $dbh->beginTransaction();


    $stmt = $dbh->prepare("UPDATE candidates set votes = votes  + 1 where candidate_Id = ? ");

    if ($stmt->execute([$selectedvoter])) {

        $update = $dbh->prepare("UPDATE voters set voting_status = 'b' where voter_id = ?");
        $update->execute([$_SESSION['voter']]);

        $dbh->commit();

        echo  "<p class=\"alert alert-success\">Vote Casted</p>";


    }else{


        echo  "<p class=\"alert alert-danger\"> could not cast Vote</p>";

    }




}
catch (PDOException $e) {

    error_log("Error : " . $e->getMessage());

}
?>

登录代码仅允许选民try { $stmt = $dbh->prepare("SELECT voter_id,id_number,password from voters where id_number = ? AND voting_status = 'a' "); $stmt->bindValue(1,$username); $stmt->execute(); $results = $stmt->fetchall(PDO::FETCH_ASSOC); if(count($results) > 0){ foreach($results as $row){ if(password_verify($password,$row['password'])){ $SignError="<div class=\"alert alert-success\"> <button class=\"close\" data-dismiss=\"alert\">x</button> Login Success. Redirecting... </div>"; header("refresh:4;url=page.php"); // change page to ur dashboard url }else{ $SignError="<div class=\"alert alert-error\"> <button class=\"close\" data-dismiss=\"alert\">x</button> Password and ID number does not match </div>"; } } }else{ $SignError="<div class=\"alert alert-error\"> <button class=\"close\" data-dismiss=\"alert\">x</button> Password and ID number does not match </div>"; } } catch (PDOException $e) { error_log($e); } (意味着尚未投票的用户)