PHP不处理表单上的复选框

PHP不处理表单上的复选框,php,html,forms,checkbox,process,Php,Html,Forms,Checkbox,Process,我在表单中添加了两个复选框,设置为在发送时发送到电子邮件地址。听起来不错,只是它没有处理表单。在我添加复选框之前,一切都进行得很顺利- 以下是HTML: <form id="form" method="post" name="validation" action="index.php" onsubmit="received()"> <fieldset> <label for="name">Full Name:</label>

我在表单中添加了两个复选框,设置为在发送时发送到电子邮件地址。听起来不错,只是它没有处理表单。在我添加复选框之前,一切都进行得很顺利-

以下是
HTML

<form id="form" method="post" name="validation" action="index.php" onsubmit="received()">
    <fieldset>
        <label for="name">Full Name:</label>
        <input type="text" name="name" title="Enter your name">

        <label for="attending"># Attending:</label>
        <input style="margin-left:190px;" type="text" name="attending" title="Optional">

        <label for="guests">Name of Guest(s): </label>
        <input style="margin-left:370px;" type="text" name="guests">

        <span class="fakelabel">Please Check All that Apply:</span>

        <input type="checkbox" name="prenuptial" value="Yes"><span class="additions">I Will Be Attending the Prenuptial Dinner</span><br>

        <input type="checkbox" name="transportation" value="Yes"><span class="additions">I Will Be Requiring Transportation To and From the Wedding</span>

        <div class="submitcontainer">
            <input type="submit" style="font-size:0;" name="submit" class="submitbutton" id="submit">
    </fieldset>
</form>

我想知道错误是否在最后一行?

我看到了一些东西。首先,您应该检查复选框键是否存在(如果用户不检查它们,它们将丢失)。您可以找到一种方法来确保它们始终存在

第二,你的父母在错误的地方。你有:

strip_tags($_POST['transportation'] == 'Yes');
你的意思是:

strip_tags($_POST['transportation']) == 'Yes';
第三,如果要检查值,则不需要
strip\u标记。就这点而言,你甚至不需要平等测试。由于复选框仅在选中时才会出现,因此您只需调用:

$transpertation = isset($_POST['transportation']);

还应该注意的是,复选框实际上应该只用于传递0或1,而不用于传递特定的字符串值,但是大多数浏览器都允许您使用value属性

我看到了几件事。首先,您应该检查复选框键是否存在(如果用户不检查它们,它们将丢失)。您可以找到一种方法来确保它们始终存在

第二,你的父母在错误的地方。你有:

strip_tags($_POST['transportation'] == 'Yes');
你的意思是:

strip_tags($_POST['transportation']) == 'Yes';
第三,如果要检查值,则不需要
strip\u标记。就这点而言,你甚至不需要平等测试。由于复选框仅在选中时才会出现,因此您只需调用:

$transpertation = isset($_POST['transportation']);
还应该注意的是,复选框实际上应该只用于传递0或1,而不用于传递特定的字符串值,但是大多数浏览器都允许您使用value属性

改变这一点:

$prenuptial = strip_tags($_POST['prenuptial'] == 'Yes');
$transportation = strip_tags($_POST['transportation'] == 'Yes');
为此:

$prenuptial = strip_tags($_POST['prenuptial'] == TRUE);
$transportation = strip_tags($_POST['transportation'] == TRUE);
或为此:

$prenuptial = !empty(strip_tags($_POST['prenuptial']));
$transportation = !empty(strip_tags($_POST['transportation']));
更改此项:

$prenuptial = strip_tags($_POST['prenuptial'] == 'Yes');
$transportation = strip_tags($_POST['transportation'] == 'Yes');
为此:

$prenuptial = strip_tags($_POST['prenuptial'] == TRUE);
$transportation = strip_tags($_POST['transportation'] == TRUE);
或为此:

$prenuptial = !empty(strip_tags($_POST['prenuptial']));
$transportation = !empty(strip_tags($_POST['transportation']));

为什么要去除标签

这样做,下面的代码将检查您是否选中了复选框。如果您已选中,它将发送
Yes
else
No
。如果不想发送,请将文本
No
更改为null

 $name = strip_tags($_POST['name']);
 $attending = strip_tags($_POST['attending']);
 $guests = strip_tags($_POST['guests']);
 $prenuptial = (isset($_POST['prenuptial']) && $_POST['prenuptial'] == 'Yes') ? "Yes" : "No";
 $transportation = (isset($_POST['transportation']) && $_POST['transportation'] == 'Yes') ? "Yes" : "No";
 $to = 'email@yahoo.com';
请注意,在两个复选框中,您给定的值都是
yes
,因此当您发布一个for
yes
时,这两个复选框的值都是

<input type="checkbox" name="prenuptial" value="Yes"><span class="additions">I Will Be Attending the Prenuptial Dinner</span><br>
<input type="checkbox" name="transportation" value="Yes"><span class="additions">I Will Be Requiring Transportation To and From the Wedding</span>
用php编写如下代码

<input type="checkbox" name="prenuptial" value="I Will Be Attending the Prenuptial Dinner"><span class="additions">I Will Be Attending the Prenuptial Dinner</span><br>  
<input type="checkbox" name="transportation" value="I Will Be Requiring Transportation To and From the Wedding"><span class="additions">I Will Be Requiring Transportation To and From the Wedding</span>
$prenuptial = '';
if (isset($_POST['prenuptial'])) {
    $prenuptial = $_POST['prenuptial'];
}

为什么要去除标签

这样做,下面的代码将检查您是否选中了复选框。如果您已选中,它将发送
Yes
else
No
。如果不想发送,请将文本
No
更改为null

 $name = strip_tags($_POST['name']);
 $attending = strip_tags($_POST['attending']);
 $guests = strip_tags($_POST['guests']);
 $prenuptial = (isset($_POST['prenuptial']) && $_POST['prenuptial'] == 'Yes') ? "Yes" : "No";
 $transportation = (isset($_POST['transportation']) && $_POST['transportation'] == 'Yes') ? "Yes" : "No";
 $to = 'email@yahoo.com';
请注意,在两个复选框中,您给定的值都是
yes
,因此当您发布一个for
yes
时,这两个复选框的值都是

<input type="checkbox" name="prenuptial" value="Yes"><span class="additions">I Will Be Attending the Prenuptial Dinner</span><br>
<input type="checkbox" name="transportation" value="Yes"><span class="additions">I Will Be Requiring Transportation To and From the Wedding</span>
用php编写如下代码

<input type="checkbox" name="prenuptial" value="I Will Be Attending the Prenuptial Dinner"><span class="additions">I Will Be Attending the Prenuptial Dinner</span><br>  
<input type="checkbox" name="transportation" value="I Will Be Requiring Transportation To and From the Wedding"><span class="additions">I Will Be Requiring Transportation To and From the Wedding</span>
$prenuptial = '';
if (isset($_POST['prenuptial'])) {
    $prenuptial = $_POST['prenuptial'];
}

尝试检查是否设置了复选框,然后给它们一个值,即:

if(isset($_POST['transportation']) && $_POST['transportation'] == 'Yes')
{
    $transportation = 'Yes';
}
else
{
    $transportation = 'No';
}

尝试检查是否设置了复选框,然后给它们一个值,即:

if(isset($_POST['transportation']) && $_POST['transportation'] == 'Yes')
{
    $transportation = 'Yes';
}
else
{
    $transportation = 'No';
}


谢谢-链接显示两个输入的一个名称和两个不同的值。这就是你指的吗?是的。表单中最后输入的名字将反映在请求中。好的,所有这些建议,我完全搞不懂。对于同一个选项,我是否需要两个输入,即一个值为1时隐藏,另一个值为0时不隐藏,就像您发布的链接一样?首先,隐藏的一个值为0,非隐藏的一个值为1。其次,我认为您应该按原样使用表单,只需将支票更改为
isset($\u POST['transportation'])
。这可以用更少的工作量完成你想要的一切。如果希望它是
yes/no
,则添加三元:
isset($\u POST['transportation'])?“yes”:“no”
谢谢-链接显示两个输入的一个名称和两个不同的值。这就是你指的吗?是的。表单中最后输入的名字将反映在请求中。好的,所有这些建议,我完全搞不懂。对于同一个选项,我是否需要两个输入,即一个值为1时隐藏,另一个值为0时不隐藏,就像您发布的链接一样?首先,隐藏的一个值为0,非隐藏的一个值为1。其次,我认为您应该按原样使用表单,只需将支票更改为
isset($\u POST['transportation'])
。这可以用更少的工作量完成你想要的一切。如果您希望它是
yes/no
则添加三元:
isset($\u POST['transportation'])?“yes':'no'
谢谢-那么婚前和交通的值应该是什么?我将它们保留为“是”,并按您所示更改了所有内容,但如果您选中其中任何一个值,则它仍然没有处理。否则它将不会发布。我是否可以添加值:例如,我将参加婚前晚宴,然后在处理页面上使用上面修改的代码?是的,您可以。在
php
中添加我给出的答案。我发现了错误-一切都正常-感谢您的帮助!我还不能投你一票,因为我没有足够的声誉。但是谢谢!谢谢-那么婚前和交通的价值应该是什么呢?我将它们保留为“是”,并按您所示更改了所有内容,但如果您选中其中任何一个值,则它仍然没有处理。否则它将不会发布。我是否可以添加值:例如,我将参加婚前晚宴,然后在处理页面上使用上面修改的代码?是的,您可以。在
php
中添加我给出的答案。我发现了错误-一切都正常-感谢您的帮助!我还不能投你一票,因为我没有足够的声誉。但是谢谢!谢谢-我尝试过这个-仍然无法使用添加的复选框处理这个-我尝试过这个-仍然无法使用添加的复选框处理这个