[英]This if or that if in contact form
dunno我可以再写一个关于联系表的问题,但是我会尝试的:)也许您会更快地帮助您; p
码:
<?php
$name = $_POST['name'];
$email = $_POST['email'];
$message = $_POST['message'];
$from = 'From: domain.com';
$to = 'dawid@domain.com';
$subject = 'Message from domain.com';
$body = "From: $name\n E-Mail: $email\n Message:\n $message";
if ($_POST['submit']) {
if (!preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/",$email))
{
echo '<p class="msg">Wrong email adress!!!</p>';
}
if ($name != '' && $email != '') {
if (mail ($to, $subject, $body, $from)) {
echo '<p class="msg">Your message has been sent!</p>';
} else {
echo '<p class="msg">Something went wrong, go back and try again!</p>';
}
} else {
echo '<p class="msg">You need to fill in all required fields!!</p>';
}
}
?>
如您所见,如果在这里,我在if语句中没有几个消息(echos)。 但是我想让它仅显示一个回显,即使联系表单中会有更多错误……这可能吗?
示例:有人将所有输入留空,然后单击“发送”-atm,他将收到有关错误电子邮件的消息,并且“ u需要填写所有必填字段”。 但是在这种操作系统情况下,我首先只想显示有关空字段的消息,然后在此之后,例如,如果有人会写一封错误的电子邮件,另外一封关于错误的电子邮件的消息:D希望您理解我的意思。 谢谢
if ($name == '' || $email == '' || $message == '') {
echo '<p class="msg">You need to fill in all required fields!!</p>';
}else if(!preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/",$email)){
echo '<p class="msg">Wrong email adress!!!</p>';
}else if (!mail ($to, $subject, $body, $from)){
echo '<p class="msg">Your message has not been sent!</p>';
}else{
echo '<p class="msg">Your message has been sent!</p>';
}
制作一个错误数组,然后内爆该数组以显示完整的错误消息。
// DEFAULT
$errors = array();
// CHECK THINGS FOR ERRORS AND ADD THEM TO THE ERROR ARRAY
if ((!$name) || ($name == '')) {
$errors[] = '* Name is required';
}
if ((!$email) || ($email == '')) {
$errors[] = '* Email is required';
}
// ... etc. - Anything else you want caught in an error
// IF WE HAVE ERRORS, TURN THEM INTO A STRING AND PRINT THEM
if ($errors) {
$error_message = implode('<br>', $errors);
echo $error_message;
}
编辑:根据OP的请求,这是所要求的示例。
// CHECK THINGS FOR ERRORS AND ADD THEM TO THE ERROR ARRAY
if ((!$name) || ($name == '')) {
$errors = '* Name is required';
}
if ((!$email) || ($email == '')) {
$errors = '* Email is required';
}
// ... etc. - Anything else you want caught in an error
// IF WE HAVE ERRORS, PRINT THEM
if ($errors) {
echo $error_message;
}
**注意:您可以通过使用条件语句来实现同一件事(这样做更有意义)。 只能将一个条件评估为true,因此一旦找到匹配项,就不会再进入任何其他“ elseif”语句。
if ($_POST['submit']) {
if (!$email) {
echo '<p class="msg">Email is required.</p>';
}
elseif (!$name) {
echo '<p class="msg">Name is required.</p>';
}
elseif (!preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/",$email)) {
echo '<p class="msg">Wrong email adress!!!</p>';
}
elseif ($name != '' && $email != '') {
if (mail ($to, $subject, $body, $from)) {
echo '<p class="msg">Your message has been sent!</p>';
}
else {
echo '<p class="msg">Something went wrong, go back and try again!</p>';
}
}
else {
echo '<p class="msg">You need to fill in all required fields!!</p>';
}
}
我仍然认为可以编辑此代码,因为它可以按我的意愿工作...但是不知道如何; D
<?php
$name = $_POST['name'];
$email = $_POST['email'];
$message = $_POST['message'];
$from = 'From: domain.com';
$to = 'dawid@domain.com';
$subject = 'Message from domain.com';
$body = "From: $name\n E-Mail: $email\n Message:\n $message";
if ($_POST['submit']) {
if (!preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/",$email))
{
echo '<p class="msg">Wrong email adress!!!</p>';
}
if ($name != '' && $email != '') {
if (mail ($to, $subject, $body, $from)) {
echo '<p class="msg">Your message has been sent!</p>';
} else {
echo '<p class="msg">Something went wrong, go back and try again!</p>';
}
} else {
echo '<p class="msg">You need to fill in all required fields!!</p>';
}
}
?>
也许把这个关于邮件的错误放在其他地方还是什么? 还是其他的? 帮助<3
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.