我一直在创建投票系统,并且注意到用户注销后仍然能够再次投票。
我想做的是添加一个变量进行投票,现在按下按钮,并将其最大值设置为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");
}
}
?>
最佳答案
用户登录和注销后必须维护$ _SESSION变量。必须存储和比较user_id
,并将查询检查票的查询修改为$user_check_query = "SELECT * FROM users WHERE user_id=:user_id and votenow=:votenow";
使用bindparams可以增加sql注入的安全性。