Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/238.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 选中“无”的html复选框不会发布_Php_Html_Post - Fatal编程技术网

Php 选中“无”的html复选框不会发布

Php 选中“无”的html复选框不会发布,php,html,post,Php,Html,Post,我从一个HTML表单中发布复选框,我遇到了一个奇怪的问题。首先,我在表单顶部有一个默认的复选框和禁用框,但它不包含在POST数据中。第二个是,如果我不检查某些内容,整个数组将被忽略 如何使其1)包含默认框,2)如果未选择空数组,则发布空数组 代码如下: <form action="file.php" method="POST"> <label><input type="checkbox" name="options[]" value="username" c

我从一个HTML表单中发布复选框,我遇到了一个奇怪的问题。首先,我在表单顶部有一个默认的复选框和禁用框,但它不包含在POST数据中。第二个是,如果我不检查某些内容,整个数组将被忽略

如何使其1)包含默认框,2)如果未选择空数组,则发布空数组

代码如下:

<form action="file.php" method="POST">
    <label><input type="checkbox" name="options[]" value="username" checked disabled> Username</label><br>
    <label><input type="checkbox" name="options[]" value="title"> Title</label>
    <label><input type="checkbox" name="options[]" value="first"> First Name</label>
    <label><input type="checkbox" name="options[]" value="last"> Last Name</label><br>
    <label><input type="checkbox" name="options[]" value="address"> Address</label>
    <label><input type="checkbox" name="options[]" value="city"> City</label>
    <label><input type="checkbox" name="options[]" value="state"> State</label>
    <label><input type="checkbox" name="options[]" value="zip"> ZIP</label><br>
    <label><input type="checkbox" name="options[]" value="email"> Email</label>
    <label><input type="checkbox" name="options[]" value="phone"> Phone</label><br>
    <input type="submit" value="submit">
</form>

用户名
标题 名字 姓氏
地址 城市 陈述 拉链
电子邮件 电话
file.php

<?php var_dump($_POST)

这是标准HTML的一部分(即不是浏览器)。根据定义。考虑不同的数据结构,或者添加一些类似

if(isset($_POST['options'])) { 
     //work with options here
}
如果这不起作用,您可以始终包含一个
隐藏的
元素,它至少可以在
$\u POST

<input type="hidden" name="options[]" value="NA">

这是标准HTML的一部分(即不是浏览器)。根据定义。考虑不同的数据结构,或者添加一些类似

if(isset($_POST['options'])) { 
     //work with options here
}
如果这不起作用,您可以始终包含一个
隐藏的
元素,它至少可以在
$\u POST

<input type="hidden" name="options[]" value="NA">

您也可以这样做,而无需更改HTML。简单地说,创建一个包含所有可能复选框值的列表,并与发布的值进行比较。就用户名而言,由于它始终存在,您可以手动将其添加到
$\u POST
数组中

// Auto insert username to $_POST array (because it's always there by default)
$_POST['options'][] = 'username';

// Create array of all possible checkbox values
$boxes = array('username','title','first','last','address','city','state','zip','email','phone');

// Compare $_POST array to list of possible checkboxes
// and create manual post array
$post_array = array();
foreach ($boxes as $box) {
    $post_array[$box] = in_array($box, $_POST['options']) ? 'checked' : 'NOT checked';
}
输出将是一个数组,
$post_array
,它将包含以下内容:

Array
(
    [username] => checked
    [title] => checked
    [first] => NOT checked
    [last] => NOT checked
    [address] => checked
    [city] => checked
    [state] => NOT checked
    [zip] => NOT checked
    [email] => NOT checked
    [phone] => checked
)

您也可以在不更改HTML的情况下执行类似的操作。简单地说,创建一个包含所有可能复选框值的列表,并与发布的值进行比较。就用户名而言,由于它始终存在,您可以手动将其添加到
$\u POST
数组中

// Auto insert username to $_POST array (because it's always there by default)
$_POST['options'][] = 'username';

// Create array of all possible checkbox values
$boxes = array('username','title','first','last','address','city','state','zip','email','phone');

// Compare $_POST array to list of possible checkboxes
// and create manual post array
$post_array = array();
foreach ($boxes as $box) {
    $post_array[$box] = in_array($box, $_POST['options']) ? 'checked' : 'NOT checked';
}
输出将是一个数组,
$post_array
,它将包含以下内容:

Array
(
    [username] => checked
    [title] => checked
    [first] => NOT checked
    [last] => NOT checked
    [address] => checked
    [city] => checked
    [state] => NOT checked
    [zip] => NOT checked
    [email] => NOT checked
    [phone] => checked
)

禁用的复选框不会被张贴。您可以在提交过程中启用它,也可以对该值使用隐藏输入。为它们指定自己的名称,浏览器只发送打开的复选框不会有问题。禁用的复选框不会被张贴。您可以在提交期间启用它,也可以对该值使用隐藏输入。为它们指定自己的名称,浏览器只发送打开的元素不会有问题。在这种情况下,“从不发送未选中和禁用的复选框”,但可以。如果是,则不成功发送禁用的元素(任何类型),您需要将索引与hidden和checkbox/disabled相匹配,并且hidden必须位于checkbox之前。在这种情况下,“未选中和禁用的复选框永远不会发送”,但为“是”。为True,但也不能成功地发送任何禁用的元素(任何类型),您需要将索引与hidden和checkbox/disabled相匹配,并且hidden必须位于checkbox之前。