我正在创建一个非常长的表单,并不是所有字段都会被回答,如何在点击发送按钮后隐藏未找到的字段并收到电子邮件?
所以我想知道的是,在发送提交按钮后,我可以添加到我的脚本中以隐藏空白字段。
/* Data Variables */
$email = $_POST['email'];
$name = $_POST['name'];
$phone = $_POST['phone'];
$uplift = $_POST['uplift'];
$upliftc = $_POST['upliftc'];
$city = $_POST['city'];
$post = $_POST['post'];
$delivery = $_POST['delivery'];
$deliveryc = $_POST['deliveryc'];
$city2 = $_POST['city2'];
$post2 = $_POST['post2'];
$ground = $_POST['ground'];
$second = $_POST['second'];
$second2 = $_POST['second2'];
$ground2 = $_POST['ground2'];
$internal =$_POST['internal'];
$internal2 =$_POST['internal2'];
$external =$_POST['external'];
$external2 =$_POST['external2'];
$access =$_POST['access'];
$queen = $_POST['queen'] * 1.7;
$body = <<<EOD
<br><hr><br>
Name: $name <br>
Email: $email <br>
Phone; $phone <br>
<br>
Uplift; $uplift <br>
Continued; $upliftc <br>
City; $city <br>
Post Code; $post <br>
<br>
Delivery Address; $delivery <br>
Continued; $deliveryc <br>
City; $city2 <br>
Post; $post2 <br>
<br>
Uplift; <br>
Ground Floor; $ground <br>
Second Floor; $second <br>
Internal Stairs; $internal <br>
External Stairs; $external <br>
<br>
Delivery; <br>
Ground Floor; $ground2 <br>
Second Floor; $second2 <br>
Internal Stairs; $internal2 <br>
External Stairs; $external2 <br>
Truck Access; $access <br>
Queen Bed; $queen <br>
答案 0 :(得分:3)
其他人提到isset()
函数,但这不起作用。即使用户在提交表单时没有填写值,该变量仍然设置,因此所有变量在TRUE
运行时都会返回isset()
。 empty()
是您最好的选择。
您可以使用循环来测试值并填充电子邮件正文,但是需要通过赋予值不同的名称来重新设计HTML表单,例如,而不是:
<input type="text" name="email">
使用:
<input type="text" name="field[Email]">
这将创建$_POST['field']
作为数组,其中包含$_POST['field']['email']
等值,其中包含您的值。从技术上讲,您可以在不重命名字段并循环遍历$_POST
本身的情况下执行此操作,但这会假设您没有发布任何非字段相关数据,并且您永远不会......不安全。< / p>
重命名HTML表单字段后,处理请求的PHP代码如下所示:
$email_body = "";
if( is_array( $_POST['field'] )) {
foreach( $_POST['field'] as $name => $value ) {
if( !empty( $value )) {
$email_body .= "$name: $value<br>\n";
}
}
}
这比你写的代码少得多。它还将省略空白值,并且仅支持通过修改HTML表单来添加新字段,而无需修改处理它的PHP代码。
我注意到您生成的电子邮件正文似乎将值分解为多个部分。您可以使用与我上面所写的相同的想法,通过向数组添加另一个索引来实现这一点,并且它将保持创建HTML表单字段的动态特性,如下所示:
<input type="text" name="field[Contact][Email]">
然后是PHP:
$email_body = "";
if( is_array( $_POST['field'] )) {
foreach( $_POST['field'] as $category => $fields ) {
$email_body .= "<br>\n";
if( is_array( $fields )) {
foreach( $fields as $name => $value ) {
if( !empty( $value )) {
$email_body .= "$name: $value<br>\n";
}
}
}
}
}
答案 1 :(得分:0)
如果没有填写,请不要求?
if(!isset($_POST['access'])){
// Do whatever
} else {
// do something else
}
答案 2 :(得分:0)
如果给定的变量有值,则有isset($variable_name)
函数返回true,否则返回false。