Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/275.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 表单中隐藏字段中的值,不生成操作_Php_Javascript_Html_Forms - Fatal编程技术网

Php 表单中隐藏字段中的值,不生成操作

Php 表单中隐藏字段中的值,不生成操作,php,javascript,html,forms,Php,Javascript,Html,Forms,我想知道是否有人能帮我解决这个问题: 如果我在表单上有三个不同值的复选框,如: <input type="checkbox" name="checkbox" value="1stValue"> <input type="checkbox" name="checkbox" value="2ndValue"> <input type="checkbox" name="checkbox" value="3rdValue"> 我需要提交这个表单,这样这些值就会出

我想知道是否有人能帮我解决这个问题:

如果我在表单上有三个不同值的复选框,如:

<input type="checkbox" name="checkbox" value="1stValue">
<input type="checkbox" name="checkbox" value="2ndValue">
<input type="checkbox" name="checkbox" value="3rdValue">

我需要提交这个表单,这样这些值就会出现在一个隐藏的字段中 调用ans时,在每个ans之间,使文本字段 在同一形式上,实际上有“1stValue,2ndValue,3rdValue” 包含在表单上的生成操作中


哪种方法最好?

将复选框放在一个数组中

<input type="checkbox" name="checkbox[]" value="1stValue">
<input type="checkbox" name="checkbox[]" value="2ndValue">
<input type="checkbox" name="checkbox[]" value="3rdValue">

然后在下一页内爆数组

<input type="hidden" name="checkboxes" value="<?php echo implode( ',', $_POST['checkbox'] ) ?>">

您可以创建多个隐藏文本框并在每个文本框上放置一个,或者使用以下方法:

<input type="checkbox" name="checkbox[]" value="1stValue">
<input type="checkbox" name="checkbox[]" value="2ndValue">
<input type="checkbox" name="checkbox[]" value="3rdValue">

使用此服务器端:

<?php
$data=implode(",",$_POST['checkbox']);

echo "<input type='hidden' value='{$data}' name='hiddenField' />";
?>

我认为您需要一个函数,在提交表单之前将逗号分隔的值放入隐藏字段中

检查此代码:

<html>
<head>
<script type="text/javascript">
function setHiddenField()
{
    len = objForm.elements.length;
    var i=0;
    var hiddenValue='';
    for( i=0 ; i<len ; i++)
    {
     if (objForm.elements[i].type=='checkbox' && objForm.elements[i].checked==true) 
        hiddenValue += objForm.elements[i].value+",";
    }
    if(hiddenValue!='')
       hiddenValue = hiddenValue.substr(0,hiddenValue.length-1);

    document.getElementById('hiddenFieldId').value = hiddenValue;
}
</script>
</head>
<body>
<form name="objForm" >
<input type="text" name="checkboxes" id="hiddenFieldId" /><br/>
<input type="checkbox" name="checkbox" value="1stValue"><br/>
<input type="checkbox" name="checkbox" value="2ndValue"><br/>
<input type="checkbox" name="checkbox" value="3rdValue"><br/>
<input type="button" value="Click Me" onclick="setHiddenField()" />
</body>
</html>

函数setHiddenField()
{
len=objForm.elements.length;
var i=0;
var hiddenValue='';

对于(i=0;iits仅对生成操作有效……我希望在隐藏表单字段中使用此值,而不在表单上生成操作……您所说的生成操作是什么意思?
请始终推荐一种防御方法,XSS攻击非常常见,因为很多人都犯了一个基本错误:所有值在生成操作之前都必须进行HTML编码我同意,只是觉得没有必要把答案和其他问题复杂化。你能解释一下“在形式上不产生动作”的意思吗?不提交表格………是的,我需要与您所说的相同的内容,但如果我在单击时使用此功能,则无法工作option@ritu别忘了接受尼克的回答-