1

我有一个联系表格,我需要在 PHP 中进行验证,以检查每个字段是否正确填写。

这是我所拥有的:

//Post fields
<?php
$field_name = $_POST['name'];
$field_email = $_POST['email'];
$field_services = $_POST['services'];
$field_it = $_POST['it'];
$field_location = $_POST['location'];
$field_message = $_POST['message'];


//mail_to omitted 


//Validation of contact form

$errormessage = '';
if($field_name == ''){

$errormessage += 'You have not entered your Name\n';
}

if($field_email == ''){

$errormessage += 'You have not entered your Email Address\n';
}

if($field_services == ''){

$errormessage += 'You have not chosen the service you require\n';
}

if($field_it == ''){

$errormessage += 'You have not chosen the Date of your event\n';
}

if($field_location == ''){

$errormessage += 'You have not entered the location of your event\n';
}


if($errormessage != ''){ ?>

<script language="javascript" type="text/javascript">
    alert('The following fields have not neen entered correctly\n<?php echo "$errormessage" ?>');
    window.location = 'contact.html';
</script>
<?php } 



if ($mail_status) { ?>
<script language="javascript" type="text/javascript">
    alert('Thank you for the message. We will contact you shortly.');
    window.location = 'contact.html';
</script>
<?php
}


else { ?>
<script language="javascript" type="text/javascript">
    alert('Message failed. Please, send an email to s_ejaz@live.co.uk');
    window.location = 'contact.html';
</script>
<?php
}
?>

当我尝试提交一个空的联系表单时,这没有任何作用,它应该提醒用户未填写但没有填写的特定字段。它只是把我带到一个空白的白页。

谁能帮我找出我哪里出错了?

4

4 回答 4

2

此外,您可以使用修剪功能删除任何空间。

trim($_POST['name'])...
于 2013-08-30T04:46:45.617 回答
1

您应该使用strlen()andisset()检查是否从表格中收到任何数据。

例子:

if(!isset($_POST['name']) || strlen($_POST['name']) < 1){
    $errormessage .= 'You have not entered your Name\n';
}
于 2013-08-29T22:33:57.660 回答
1

不要像这样将变量与空字符串进行比较,而是$field_services == ''使用empty()isset()

if(!empty($field_services))或者if(isset($field_services))

另一个问题是您使用 连接字符串+,如果您正在使用,这是真的javascriptjava或者C#等等......不是PHP

使用 PHP 连接变量:

 $var='Hello';
 $var.=' World !'

 echo $var;// Hello World !

所以你的代码应该是:

 if(empty($_POST['name'])){
   $errormessage .= 'You have not entered your Name\n';
}
于 2013-08-29T22:36:13.333 回答
1

尝试使用$errormessage.='Some text\n';而不是$errormessage+='Some text\n';.
使用“ +”代替“ .”,PHP将变量$errormessage视为数字,断言失败。

于 2013-08-29T22:38:12.707 回答