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
elseNo
。如果不想发送,请将文本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
,因此当您发布一个foryes
时,这两个复选框的值都是
<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
elseNo
。如果不想发送,请将文本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
,因此当您发布一个foryes
时,这两个复选框的值都是
<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
中添加我给出的答案。我发现了错误-一切都正常-感谢您的帮助!我还不能投你一票,因为我没有足够的声誉。但是谢谢!谢谢-我尝试过这个-仍然无法使用添加的复选框处理这个-我尝试过这个-仍然无法使用添加的复选框处理这个