Php 是否显示空表单字段的消息?
我正试图让我的网站上的optin表单不发送空字段 我在表单字段中也有预定义的文本(例如“在此处输入您的姓名”),单击后会消失。我也不希望表单发送预定义的文本数据 用PHP实现这一点的最佳方法是什么 HTML:Php 是否显示空表单字段的消息?,php,Php,我正试图让我的网站上的optin表单不发送空字段 我在表单字段中也有预定义的文本(例如“在此处输入您的姓名”),单击后会消失。我也不希望表单发送预定义的文本数据 用PHP实现这一点的最佳方法是什么 HTML: 预约:现在填写下表,我会打电话给你安排下一次牙科预约。。。 PHP: 请尝试以下方法: <?php $to = 'test@mywebsite.com'; $subject = 'New Patient'; $header = 'From: test@myweb
预约:现在填写下表,我会打电话给你安排下一次牙科预约。。。
PHP:
请尝试以下方法:
<?php
$to = 'test@mywebsite.com';
$subject = 'New Patient';
$header = 'From: test@mywebsite.com';
$feedback = null;
if($_SERVER['REQUEST_METHOD'] == 'POST'){
$name = (!empty($_POST['name'])?$_POST['name']:null);
$phone = (!empty($_POST['phone'])?$_POST['phone']:null);
$body = <<<EMAIL
Hi, my name is $name, and phone number is $phone.
EMAIL;
if($name !== null && $phone !== null){
mail($to, $subject, $body, $header);
$feedback = 'Message Sent';
}else{
$feedback = 'Fill out all the fields';
}
}
?>
首先,您应该使用JavaScript在客户端进行验证
<?
$name = $phone = $status= '';
if(isset($_POST['submit'])){
$name = (!empty($_POST['name'])?$_POST['name']:null);
$phone = (!empty($_POST['phone'])?$_POST['phone']:null);
if($name !== null && $phone !== null){
mail($to, $subject, $body, $header);
$name = $phone = '';
$status = 'Message Sent';
}
else
$status= 'Fill out all the fields';
}
<? if(!empty($status)): ?><p class="error"><?=$status?></p><? endif; ?>
<input type="text" name="name" value="<?=$name?>"/>
<input type="text" name="phone" value="<?=$phone?>"/>
<input type="submit" name="submit" value="send"/>
我建议您在$\u POST变量上使用empty(),最好是在必需的表单字段上(而不仅仅是$\u POST)。例如:
if(!empty($_POST['name'])) {
// Name field was posted
}
这与isset不同,因为如果字段类似于“”或NULL,isset将返回true。鉴于empty仅接受非空/非null的值。因此,在这种情况下,空函数是更好的选择
希望这会有所帮助。您可以通过在服务器端进行检查来防止出现这种情况:
if($_POST){ if($name != '' && $phone != '' && $name!='Enter your name' && $email!='Enter your email'){ mail($to, $subject, $body, $header); }else{ $feedback = 'Fill out all the fields'; } } ?>
但我建议您将错误处理改进为以下内容:
if ($_POST) {
$err = array();
if ($name == '' || $name == 'Enter your name') $err[] = 'Name is required';
if ($email == '' || $email == 'Enter your email') $err[] = 'Email is required';
if (empty($err)) {
mail($to, $subject, $body, $header);
} else {
$feedback = 'Fill out all fields. Errors: '.implode(', ',$err);
}
}
将onsubmit处理程序添加到表单中,该处理程序将所有不希望发送的输入的disabled
属性设置为true
更新:
这并没有放松检查应用程序PHP端所有输入参数的要求。在POST
数组中收集所有信息,然后使用array\u filter
添加了一个示例一个问题是您使用了或:if($name=''| |$phone='')这意味着使用了某个测试的或名称或电话将导致发送电子邮件。我认为&&会更好。就像刚刚发布的示例一样。您好……如果您有新问题要添加,请编辑原始问题,不要发布新问题。我把你的新问题和这个问题合并了。谢谢。我相信你的意思是if(empty($err)){…
,否则if的计算结果总是false
if($_POST){ if($name != '' && $phone != '' && $name!='Enter your name' && $email!='Enter your email'){ mail($to, $subject, $body, $header); }else{ $feedback = 'Fill out all the fields'; } } ?>
if ($_POST) {
$err = array();
if ($name == '' || $name == 'Enter your name') $err[] = 'Name is required';
if ($email == '' || $email == 'Enter your email') $err[] = 'Email is required';
if (empty($err)) {
mail($to, $subject, $body, $header);
} else {
$feedback = 'Fill out all fields. Errors: '.implode(', ',$err);
}
}