Php 如何限制mysql中number的最大值?
我一直在创建一个投票系统,我注意到用户在注销后仍然可以再次投票。Php 如何限制mysql中number的最大值?,php,mysql,variables,max,vote,Php,Mysql,Variables,Max,Vote,我一直在创建一个投票系统,我注意到用户在注销后仍然可以再次投票。 我试图做的是添加一个变量来投票,现在按钮,并将其最大值设置为1,以防止用户再次投票 是否有任何建议或方法来实现这一点,这样用户就不能像以前一样再次投票 $errors = array(); $db = mysqli_connect("localhost", "root", "", "registration"); if (isset($_POST['votenow'])) { $user_check_query = "S
我试图做的是添加一个变量来投票,现在按钮,并将其最大值设置为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");
}
}
?>
在用户登录和注销后,您必须维护$\u会话变量。您必须存储和比较用户id
,并将检查投票的查询修改为
$user\u check\u query=“从用户中选择*,其中user\u id=:user\u id和votenow=:votenow”代码>
用于从sql注入中添加安全性。在用户登录和注销后,您必须维护$\u会话变量。您必须存储和比较用户id
,并将检查投票的查询修改为
$user\u check\u query=“从用户中选择*,其中user\u id=:user\u id和votenow=:votenow”代码>
用于从sql注入中添加安全性。警告:当使用mysqli
时,您应该使用并向查询中添加任何数据。不要使用字符串插值或串联来完成此操作,因为您已经创建了严重的错误。切勿将$\u POST
、$\u GET
或任何类型的数据直接放入查询中,如果有人试图利用您的错误,这可能是非常有害的。注意:mysqli
的面向对象界面明显不那么冗长,使代码更易于阅读和审核,并且不容易与过时的mysql\u查询
接口混淆。在你对程序性风格投入太多之前,值得换一种。示例:$db=newmysqli(…)
和$db->prepare(“…”)
过程接口是PHP4时代的产物,当时引入了mysqli
API,理想情况下不应在新代码中使用。为什么您的代码不能满足您的需要?例如警告:使用mysqli
时,您应该使用并向查询中添加任何数据。不要使用字符串插值或串联来完成此操作,因为您已经创建了严重的错误。切勿将$\u POST
、$\u GET
或任何类型的数据直接放入查询中,如果有人试图利用您的错误,这可能是非常有害的。注意:mysqli
的面向对象界面明显不那么冗长,使代码更易于阅读和审核,并且不容易与过时的mysql\u查询
接口混淆。在你对程序性风格投入太多之前,值得换一种。示例:$db=new mysqli(…)
和$db->prepare(“…”)
过程接口是PHP4时代的产物,当时引入了mysqli
API,理想情况下不应该在新代码中使用。为什么您的代码不能实现您想要的功能。