【发布时间】:2020-07-18 13:35:35
【问题描述】:
我想创建一个表单来禁止我的服务器中的玩家,这就是我的表单和查询的样子。
<!-- BAN FORM -->
<?php
if(isset($_POST['ban'])){
$time=time().'000';
$durat=$_POST['duration']*86400000;
$duration=$time+$durat;
$banuid = "UPDATE userprofile SET bantime=:duration WHERE uid = '$_GET[uid]'";
$query = $dbh1 -> prepare($banuid);
$query-> bindParam(':duration',$duration, PDO::PARAM_STR);
$query -> execute();
}
?>
<form method="POST">
<div class="col-md-12">
<label for="inputUsername" class="sr-only">Duration</label>
<div class="input-group mb-3">
<div class="input-group-prepend">
<span class="input-group-text" id="icon-inputUsername"><i class="flaticon-clock-2"></i> </span>
</div>
<input type="text" name="duration" size="18" placeholder="Type how many days">
</div>
<button name="ban" class="btn btn-lg btn-gradient-warning btn-block btn-rounded mb-4 mt-5" type="submit">BAN</button>
</div>
</form>
问题是当我输入时间(应该是天)时,它会在数据库中添加实际时间。
谁能给我一个提示?
谢谢
【问题讨论】:
-
您在使用未经 url 参数处理的 uid 时有明显的 sql 注入
-
要不要改成uid=:uid并绑定参数?
-
是的,
bindParam(...)uid