我有一个表单,允许用户将他们工作过的作业(信用)存储到mysql数据库中。然后,这些信用将在页面上回显,供其他用户查看。 如何将每个用户可以提交到数据库的信用的数量限制为10?这是我用javascript做的事情吗?
这是我的表格:
<form action="process.php" form="credits" method="GET"
enctype="multipart/form-data" name="my_form" id="">
<input name="production" type="text" id="production" placeholder="Production" value = "" required>
<input name="channel" type="text" id="channel" placeholder="Channel" value = "">
<input name="company" type="text" placeholder="Production Company" value = "">
<input type="hidden" name="username" value="<?php echo $username; ?>">
<button name="submit" id ="submit">
Submit
</button>
</form>
这就是它存储在数据库中的方式。
<?php
//Database Connection
include_once "$conx.php";
if( isset($_GET['submit'] )){
$production = $_GET['production'];
$channel = $_GET['channel'];
$company = $_GET['company'];
$username = $_GET['username'];
//updating database
$stmt = $db_conx->prepare('INSERT INTO credits SET production =?, channel =?, company =?, username =?');
$stmt->bind_param('ssss',$production,$channel,$company,$username);
$stmt->execute();
mysqli_close($conx);
//Redirect back
header("location:credits.php");
}
?>
答案 0 :(得分:1)
执行此类操作的最佳方法是同时执行客户端和服务器端验证,这意味着您应该检查他们是否能够在前端使用javascript提交另一个信用,然后双重检查PHP的后端。
但从它的外观来看,每次用户输入新的信用时,您都会进行整页刷新。如果是这种情况,您甚至不需要javascript。你可以为你的表单做这样的事情:
<?php
if ($credits >= 10) {
echo 'You have reached the maximum amount of credits allowed.';
}
else {
echo [FORM GOES HERE];
}
?>
其他一些观察结果:您编写代码的方式似乎很容易被破解。例如,如果我是用户&#39; joe&#39;我可以轻松地为用户提交一些东西&innocent_jane&#39;只需在提交之前编辑页面上的隐藏字段即可。使用隐藏字段的更好方法可能是在用户登录后将用户名存储在session variable中。
答案 1 :(得分:0)
你可能想做这样的事情:
$check = $db_conx->query("SELECT COUNT(*) FROM credits WHERE username=?");
$check->bind_param("s", $username);
$check->execute();
if ($check->fetch_row()[0] >= 10) {
// show the user an error page
} else {
// proceed with the insert query
}
这是匆忙编写的伪代码,所以你可能不得不调整它以使其真正起作用,但希望这会传达你想要使用的一般方法。
答案 2 :(得分:0)
您可以先检查数据库中的用户名:
if($result = $db_conx->query("SELECT * FROM credits WHERE username == ".$username))
{
if(($result->num_rows) < 10){ // Less than 10 credits for that username
// do the database updating
}
$result->close();
} else { // It didn't find any entries for that username
// do the database updating