如何限制mysql中number的最大值?

时间:2019-03-01 16:41:19

标签: php mysql variables max vote

我一直在创建投票系统,我注意到用户注销后仍然能够再次投票。
我想做的是添加一个变量进行投票,现在按下按钮,并将其最大值设置为1,以防止用户再次投票。

是否有任何建议或方法可以实现这一目标,使用户无法像这样再次投票?

$errors = array(); 
$db = mysqli_connect("localhost", "root", "", "registration");
if (isset($_POST['votenow'])) {
    $user_check_query = "SELECT * FROM users WHERE votenow = '$votenow'";
    $votenow = "update users set votenow = votenow + 1";
    $run_vote = mysqli_query($db, $votenow);
    if ($votenow > 1 ) {
        echo "No more votes can be added.";
    } 
    if ($run_vote) { 
        header( "Location: renewsys3.php" ); 
    } 
}

我也一直在尝试,但是用户仍然可以再次投票。投票有效,限制为1票,但用户仍被重定向到下一页,而不是返回。 renewsys2re是当前页面,renewsys3是下一页。

<?php
$errors = array(); 
$db = mysqli_connect("localhost","root","","registration");

    if(isset($_POST['votenow']))
    { 

    $votenow = "update users set votenow = votenow + 1 where votenow < 1 
    LIMIT 1";

    $run_vote = mysqli_query($db,$votenow);

    if ($votenow == 2 ){
    echo '<script type="text/javascript">alert("Once!");</script>';
    header ("Refresh:0; url=renewsys2re.php");
    }

    else{
    echo '<script type="text/javascript">alert("Welcome!");</script>';
    header ("Refresh:0; url=renewsys3.php");
}
}
?>

1 个答案:

答案 0 :(得分:0)

在用户登录和注销后,您必须维护$ _SESSION变量。您必须存储和比较user_id,并将查询选票的查询修改为 $user_check_query = "SELECT * FROM users WHERE user_id=:user_id and votenow=:votenow";

使用bindparams来增加sql注入的安全性。