如果 $_POST 值仍然相同,PHP 表单将拒绝发送
Posted
技术标签:
【中文标题】如果 $_POST 值仍然相同,PHP 表单将拒绝发送【英文标题】:PHP form refuse to send if $_POST value are still the same 【发布时间】:2020-01-16 23:26:14 【问题描述】:我正在使用Range Sliders jQuery (picture),如果我不是每次都更改所有值,则表单不会发送,我不知道为什么。如果有人知道如何解决这个问题,即使通过修改单个值,表单也会发送。谢谢:))
send_settings.php
<?php
if(isset($_POST['submit_range']))
$temp_min_php=$_POST['temp_min_field'];
$temp_max_php=$_POST['temp_max_field'];
$hum_min_php=$_POST['hum_min_field'];
$hum_max_php=$_POST['hum_max_field'];
$eau_min_php=$_POST['eau_min_field'];
$eau_max_php=$_POST['eau_max_field'];
$lum_min_php=$_POST['lum_min_field'];
$lum_max_php=$_POST['lum_max_field'];
$conn = mysqli_connect("localhost", "root", "toor", "db");
$query = "UPDATE settings SET temp_min = '$temp_min_php',temp_max = '$temp_max_php',hum_min = '$hum_min_php',hum_max = '$hum_max_php',eau_min = '$eau_min_php',eau_max = '$eau_max_php',lum_min = '$lum_min_php',lum_max = '$lum_max_php'";
$result = mysqli_query($conn, $query);
?>
settings.php
<script type="text/javascript">
$(function()
$( "#temp-range" ).slider(
range: true,
min: 0,
max: 500,
values: [ <?php echo $row['temp_min']; ?>, <?php echo $row['temp_max']; ?> ],
slide: function( event, ui )
$( "#temp_amount" ).html( ui.values[ 0 ]+ " °C" + " - " + ui.values[ 1 ]+ " °C" );
$( "#temp_min_field" ).val(ui.values[ 0 ]);
$( "#temp_max_field" ).val(ui.values[ 1 ]);
);
$( "#temp_amount" ).html( $( "#temp-range" ).slider( "values", 0 )+ " °C" +
" - " + $( "#temp-range" ).slider( "values", 1 )+ " °C" );
);
</script>
<div class="form-group">
<label for="field-1" class="col-sm-3 control-label">Température (<span id="temp_amount"></span>)</label>
<input type="hidden" id="temp_min_field" name="temp_min_field">
<input type="hidden" id="temp_max_field" name="temp_max_field">
<div class="col-sm-5">
<div id="temp-range"></div>
</div>
</div>
【问题讨论】:
您的代码容易受到SQL injection 攻击。不要使用字符串连接构建查询,而是始终使用prepared statements 和bound parameters。请参阅 this page 和 this post 了解一些很好的示例。 【参考方案1】:隐藏输入的“值”属性仅在滑块移动时设置。您需要在此处设置初始值:
<input type="hidden" id="temp_min_field" name="temp_min_field">
<input type="hidden" id="temp_max_field" name="temp_max_field">
像这样:
<input type="hidden" id="temp_min_field" name="temp_min_field" value="<?php echo $row['temp_min']; ?>">
<input type="hidden" id="temp_max_field" name="temp_max_field" value="<?php echo $row['temp_max']; ?>">
【讨论】:
以上是关于如果 $_POST 值仍然相同,PHP 表单将拒绝发送的主要内容,如果未能解决你的问题,请参考以下文章