PHP验证多个必需的输入字段
在发送电子邮件之前,我正在验证一些输入字段。我使用for each更快地遍历数组,检查每个输入是否为空,并将其作为jquery中的响应返回,以显示错误。问题在于,PHP验证多个必需的输入字段,php,Php,在发送电子邮件之前,我正在验证一些输入字段。我使用for each更快地遍历数组,检查每个输入是否为空,并将其作为jquery中的响应返回,以显示错误。问题在于,电子邮件和消息输入未被验证。即使输入为空,也会发送电子邮件 数组元素来自html的输入名称属性 function e_($data) { $data = trim($data); $data = stripslashes($data); $data = htmlspecialchars($data); r
电子邮件
和消息
输入未被验证。即使输入为空,也会发送电子邮件
数组元素来自html的输入名称属性
function e_($data) {
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}
#required fields
$required = array('name', 'email','lname','message','country' , 'city' ,'adcategory','plan' ,'company');
$success = false;
#non required fields
$website = e_($_POST['website']);
$addr = e_($_POST['address']);
foreach($required as $field) {
if (empty($_POST[$field]))
{
$success = false;
}
else if(!empty($_POST[$field])){
$success = true;
$name = e_($_POST['fname']);
$email = e_($_POST['email']); #this has issue
$lname = e_($_POST['lname']);
$msg = e_($_POST['message']); #this has issue
$country = e_($_POST['country']);
$city = e_($_POST['city']);
$adCategory = e_($_POST['adcategory']);
$plan = e_($_POST['plan']);
$companyName = e_($_POST['company']);
}
}
if($success)
echo "success";
else if (!$success)
echo json_encode(['errors'=>true]); #this will be manipulated in jquery
问题是您将
$success=true
每当您找到必填字段时,这将撤消$success=false代码>用于上一个字段。您还可以处理中的所有字段,如果
,则处理所有字段,即使这只意味着找到了其中一个必填字段
$success = true;
foreach ($required as $field) {
if (empty($_POST[$field])) {
$success = false;
$missing_field = $field;
break;
}
}
if (!$success) {
echo json_encode(['errors'=>true, 'missing' => $missing_field]);
exit();
}
$name = e_($_POST['fname']);
$email = e_($_POST['email']); #this has issue
$lname = e_($_POST['lname']);
$msg = e_($_POST['message']); #this has issue
$country = e_($_POST['country']);
$city = e_($_POST['city']);
$adCategory = e_($_POST['adcategory']);
$plan = e_($_POST['plan']);
$companyName = e_($_POST['company']);
echo "Success";
问题是您将$success=true
每当您找到必填字段时,这将撤消$success=false代码>用于上一个字段。您还可以处理中的所有字段,如果
,则处理所有字段,即使这只意味着找到了其中一个必填字段
$success = true;
foreach ($required as $field) {
if (empty($_POST[$field])) {
$success = false;
$missing_field = $field;
break;
}
}
if (!$success) {
echo json_encode(['errors'=>true, 'missing' => $missing_field]);
exit();
}
$name = e_($_POST['fname']);
$email = e_($_POST['email']); #this has issue
$lname = e_($_POST['lname']);
$msg = e_($_POST['message']); #this has issue
$country = e_($_POST['country']);
$city = e_($_POST['city']);
$adCategory = e_($_POST['adcategory']);
$plan = e_($_POST['plan']);
$companyName = e_($_POST['company']);
echo "Success";
您的foreach循环是错误的。在检查是否为空的for循环中,有if语句检查它是否为空。首先需要检查所有值是否为空,然后运行该if语句
$success = true;
foreach($required as $field) {
if (empty($_POST[$field]))
{
$success = false;
break;
}
}
if($success)
{
// set your variables
} else {
// don't set your variables
}
您的foreach循环是错误的。在检查是否为空的for循环中,有if语句检查它是否为空。首先需要检查所有值是否为空,然后运行该if语句
$success = true;
foreach($required as $field) {
if (empty($_POST[$field]))
{
$success = false;
break;
}
}
if($success)
{
// set your variables
} else {
// don't set your variables
}
An不理想,也不建议使用。An不理想,也不建议使用。由于某些原因,$success
从不返回true。我在表单中填写所有输入,我添加了代码以返回缺少的字段。当你尝试它时,它会说什么?如果你做了var\u dump($\u POST)
你看到name
了吗?你把它放在PHP代码中并查看输出。出于某种原因,$success
永远不会返回true。我在表单中填写所有输入,我添加了代码以返回缺少的字段。当你尝试它时,它会说什么?如果你做了var\u dump($\u POST)
你看到name
了吗?你把它放在PHP代码中并查看输出。