Php 结合单选按钮隐藏字段问题

Php 结合单选按钮隐藏字段问题,php,database,radio-button,Php,Database,Radio Button,我有一个网页,用户可以在其中选择在某个日期是否可用(=1)(beschikbaar)或不可用(=0),这些都在列表中提供 但是,我使用单选按钮来确保用户不能选择同一日期的可用和不可用。只要用户实际输入是否可用,代码就可以正常工作。我的问题发生在用户没有输入任何内容时,因为隐藏字段的缘故,列表中的所有空日期都被发送到值为0的数据库 我需要隐藏字段以确保用户条目和日期实际匹配,但这似乎是上述问题的原因。有人能告诉我该怎么解决这个问题吗 le代码: <?php if(isset($_POST[

我有一个网页,用户可以在其中选择在某个日期是否可用(=1)(beschikbaar)或不可用(=0),这些都在列表中提供

但是,我使用单选按钮来确保用户不能选择同一日期的可用和不可用。只要用户实际输入是否可用,代码就可以正常工作。我的问题发生在用户没有输入任何内容时,因为隐藏字段的缘故,列表中的所有空日期都被发送到值为0的数据库

我需要隐藏字段以确保用户条目和日期实际匹配,但这似乎是上述问题的原因。有人能告诉我该怎么解决这个问题吗

le代码:

<?php 
if(isset($_POST['beschikbaarheid'])) {
mysql_connect("localhost", "****", "****")or die("cannot connect to server");
mysql_select_db("****")or die("cannot select db"); 


 $UserID = $_POST['UserID'];
 $beschikbaarheid = $_POST['beschikbaarheid'];
 $Datum = $_POST['Datum'];


 foreach ($_POST['Datum'] as $date){
$index = strftime('%d%m%y',strtotime($date));
$beschikbaarheid = (isset($_POST['beschikbaarheid'][$index]) && ($_POST['beschikbaarheid'][$index] == 1 ))?1:0;
mysql_query("INSERT INTO `Werkdagen` (`UserID`, `Datum`, `bevestigd`, `invuldatum`, `beschikbaarheid`) VALUES ('$UserID', '$date', FALSE, NOW(), '$beschikbaarheid')");

首先,我会清理输入,即使它是一个单选按钮。在Chrome中,我可以在单选按钮值下输入各种讨厌的东西,并将其发送到数据库。也许把它放下

我觉得您的默认值设置为0,这意味着不可用。我会这样做:

表单具有单选按钮,其值字段为A或U表示可用或不可用。然后服务器端过滤掉A或U,如果得到零,就知道该字段没有输入

<input type="radio" id="r1" name="rate" value="A">Available</input>
<input type="radio" id="r1" name="rate" value="U">Unavailable</input>

这就是你想做的吗?筛选出选定的条目与未触及的条目?

可以从一个预先选定的条目开始,或者使用一些验证来确保它们至少检查其中一个条目。使用外部变量生成SQL语句会使代码容易受到SQL注入攻击。此外,任何带有单引号的输入数据,如“O'Malley”,都会破坏您的查询。了解参数化查询,最好使用PDO模块,以保护您的web应用程序。有很多详细的例子。另见备选方案和危险说明。运行使用外部数据构建的SQL语句就像在家门口吃由配料制成的汤。正如Lester所说,通过基于外部数据的条件生成包含内部数据的SQL语句,这样您就可以控制进入查询的内容。如果必须使用外部数据,请在插入MySQL之前清理所有输入。
<input type="radio" id="r1" name="rate" value="A">Available</input>
<input type="radio" id="r1" name="rate" value="U">Unavailable</input>
if($_POST['r1'] == "A") //Set available
else if($_POST['r1'] == "U") //Set unavailable
else if($_POST['r1'] == 0 || !isset($_POST['r1']) ) //Untouched entry field, something wrong