我正在尝试修改电子邮件表单,如果没有正确填写,但我不明白如何以简单的方式完成。
现在它的工作原理如下:
如果用户输入的所有内容都正确,则会将用户发送到send_form_email.php,其中包含大量代码且工作正常。
如果用户输入错误信息,则会将用户发送到send_form_email.php的空白版本,该版本只有错误。
我想更改最后一个,以便用户在错过某些内容时立即收到消息,并且他无法按“发送”。也许将盒子颜色改为红色等等。
你能帮助我吗?感谢。
表格:
<div id="message">
<form name="contactform" method="post" action="send_form_email.php">
<table width="450px">
<tr>
<td valign="top">
<label for="first_name">Fornavn</label></br>
</td>
<td valign="top">
<input type="text" name="first_name" maxlength="50" size="30">
</td>
</tr>
<tr>
<td valign="top">
<label for="last_name">Etternavn</label></br>
</td>
<td valign="top">
<input type="text" name="last_name" maxlength="50" size="30">
</td>
</tr>
<tr>
<td valign="top">
<label for="email">E-post</label></br>
</td>
<td valign="top">
<input type="text" name="email" maxlength="80" size="30">
</td>
</tr>
<tr>
<td valign="top">
<label for="comments">Melding</label></br>
</td>
<td valign="top">
<textarea name="comments" maxlength="1000" cols="25" rows="6"></textarea>
</td>
</tr>
<tr>
<td colspan="2">
<input type="submit" value="Submit">
</td>
</tr>
</table>
</form>
</div>
send_form_email.php:
if(isset($_POST['email'])) {
$email_to = "mymail@gmail.com";
$email_subject = "Melding fra nettsiden";
function died($error) {
echo "Sorry. Following errors appeared: <br /> ";
echo $error."<br /><br />";
die();
}
if(!isset($_POST['first_name']) ||
!isset($_POST['last_name']) ||
!isset($_POST['email']) ||
!isset($_POST['comments'])) {
died('Beklager, men det er noen feil med meldingen.');
}
$first_name = $_POST['first_name'];
$last_name = $_POST['last_name'];
$email_from = $_POST['email'];
$comments = $_POST['comments'];
$error_message = "";
$email_exp = '/^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/';
if(!preg_match($email_exp,$email_from)) {
$error_message .= 'Ugyldig e-post adresse.<br />';
}
if($first_name != '') {
$error_message .= "Fornavn er ikke fyllt ut";
}
if($last_name != '') {
$error_message .= "Etternavn er ikke fyllt ut";
}
if(strlen($comments) < 2) {
$error_message .= 'Meldingen er for kort.<br />';
}
if(strlen($error_message) > 0) {
died($error_message);
}
function clean_string($string) {
$bad = array("content-type","bcc:","to:","cc:","href");
return str_replace($bad,"",$string);
}
// E-post melding
$email_message .= "".clean_string($comments)."\n\n";
$email_message .= "Mvh"."\n";
$email_message .= "".clean_string($first_name)." ".clean_string($last_name);
$email_message .= ""."\n";
$email_message .= "".clean_string($email_from);
$email_message .= ""."\n";
// E-post headers
$headers = 'From: '.$email_from."\r\n".
'Reply-To: '.$email_from."\r\n" .
'X-Mailer: PHP/' . phpversion();
@mail($email_to, $email_subject, $email_message, $headers);
?>
...如果表单填写正确,send_form_email的其余部分会显示代码...(此部分有效)
答案 0 :(得分:1)
您可以应用两种类型的验证
以下是每个<input>
示例:
<input type="text" name="first_name" maxlength="50" required="required" size="30">
将type="email"
用于电子邮件输入字段
示例:
<input type="email" name="email" required="required" maxlength="80" size="30">
服务器端验证如下
if(isset($_POST['first_name']) && !empty($_POST['first_name'])
&& isset($_POST['last_name']) && !empty($_POST['last_name'])
&& isset($_POST['email']) && !empty($_POST['email'])
&& isset($_POST['comments']) && !empty ($_POST['comments'])
)
{
//perform the task
}
else{
echo 'You have not filled all the fields pealse go back and fill all the forms';
//redirect the user to the form or display an erro massage
}