【发布时间】:2016-08-23 03:04:02
【问题描述】:
我有一张包含用户列表的表格。每个人都分配了一个复选框。当管理员选择一些复选框时,我的脚本会将一些信息保存到所选用户的数据库中。
现在,我的问题是,在该复选框旁边,我想要一个文本输入类型,以便管理员也可以为该用户留下评论。所以,当复选框被选中并且输入类型有一些数据时,数据也会被保存。
这是我到目前为止所做的(除了明显的安全问题,我还没有考虑到):
我的列表是为每个用户循环生成的:
<input type=text name="infoAdicional" value="'.$x['infoAdicional'].'">
<input name="enviar['.$x['userID'].']" type="checkbox" value="'.$x['userEmail'].'">
我已获取信息并为复选框生成了一个 foreach 循环,但无法从文本字段中获取附加信息以进行保存(它确实会更新其他值:
$userID = $_POST['enviar'];
$infoAdicional = $_POST['infoAdicional'];
foreach ($userID as $id => $email) {
$sql = "UPDATE cursosUsuarios
SET estadoCertificado = 'pending',
infoAdicional='$infoAdicional'
WHERE userID = '$id'
AND email = '$email'
";
...
}
我认为这是因为 $infoAdicional = $_POST['infoAdicional']; 应该在循环内,但只是将其插入其中,让每个选中复选框的用户都拥有相同的附加信息,它确实会重复自己。
【问题讨论】:
-
html 代码中 type=text 周围没有引号
-
即使你把变量放在里面,你得到的结果就像变量放在外面一样。您需要使注释文本输入与复选框
infoAdicional['.$x['userID'].']相同,然后在循环中执行$infoAdicional = $_POST['infoAdicional'][$id] -
如果你没有准备好报表,你不害怕吗?不过,您的 php 变量在单引号内不起作用。
-
@jaro1989 变量用双引号括起来,因此会被评估。
-
您的代码容易受到SQL-Injections 的攻击。请开始使用准备好的参数化查询。
标签: php loops checkbox foreach