电子邮件 PHP 联系表错误作为随机输出
Posted
技术标签:
【中文标题】电子邮件 PHP 联系表错误作为随机输出【英文标题】:Email PHP Contact Form error as random output 【发布时间】:2013-11-15 15:28:31 【问题描述】:HTML
<div id="formwrap">
<form method="post" id="submitform" action="submitemail.php" >
<input type="text" class="formstyle" title="Name" name="name" />
<input type="text" class="formstyle" title="Email" name="email" />
<textarea name="message" title="Message"></textarea>
<input class="formstyletwo" type="submit" value="Send">
</form>
PHP
<?php
$mailto = "abcd@gmail.com"; /*PUT YOUR EMAIL IN HERE*/
$cc = "";
$bcc = "";
$subject = "enquiry";
$vname = "Website Contact Form";
$email = $_POST['email'];
function validateEmail($email)
if(eregi('^[a-zA-Z0-9._-]+@[a-zA-Z0-9-]+\.[a-zA-Z]2,4(\.[a-zA-Z]2,3)?(\.[a-zA-Z]2,3)?$', $email)) return true;
else return false;
if(strlen($_POST['name']) < 1 || strlen($_POST['message']) < 1 || validateEmail($email) == FALSE)
if(empty($_POST['name']))
$emailerror .= '<li>Enter name</li>';
if(validateEmail($email) == FALSE)
$emailerror .= '<li>Enter valid email</li>';
if(empty($_POST['message']))
$emailerror .= '<li>Enter message</li>';
else
$emailerror .= "Your email has been sent successfully";
// NOW SEND THE ENQUIRY
$timestamp = date("F j, Y, g:ia");
$messageproper ="\n\n" .
"Name: " .ucwords($_POST['name']) ."\n" .
"Email: " .ucwords($email) ."\n" .
"Comments: " .$_POST['message'] ."\n" .
"\n\n" ;
$messageproper = trim(stripslashes($messageproper));
mail($mailto, $subject, $messageproper, "From: \"$vname\" <".$_POST['e_mail'].">\nReply-To: \"".ucwords($_POST['first_name'])."\" <".$_POST['e_mail'].">\nX-Mailer: PHP/" . phpversion() );
?>
<div id='emailerror'>
<ul>
<? echo $emailerror; ?>
</ul>
</div>
在 XAMPP 服务器上运行它时,我在发送按钮下方以文本形式得到错误的输出
显示错误输出
输入姓名'; if(validateEmail($email) == FALSE) $emailerror .= ' 输入有效的邮箱 '; if(empty($_POST['message'])) $emailerror .= ' 输入消息'; else $emailerror .= "您的邮件已发送 成功"; // 现在发送查询 $timestamp = date("F j, Y, g:ia"); $messageproper ="\n\n" . "名称:" . ucwords($_POST['name']) . “\n”。 “电子邮件: ” 。 ucwords($email) 。 “\n”。 “注释: ” 。 $_POST['消息'] 。 “\n”。 "\n\n" ; $messageproper = 修剪(stripslashes($messageproper));邮件($mailto,$主题, $messageproper, "发件人:\"$vname\" \n回复: \"".ucwords($_POST['first_name'])."\" \nX-Mailer: PHP/" . phpversion() ); ?>
【问题讨论】:
你不应该使用速记标签 【参考方案1】:而不是使用短标签 php <? ?>
user <?php ?>
它应该修复它。
另请注意:从本地您不能发送电子邮件 throw mail 函数,并且不推荐使用 eregi 函数,而使用 preg_match 代替它
preg_match('%^[a-zA-Z0-9._-]+@[a-zA-Z0-9-]+\.[a-zA-Z]2,4(\.[a-zA-Z]2,3)?(\.[a-zA-Z]2,3)?$%', $email)
【讨论】:
它删除了所有错误,但点击发送按钮后,我没有得到任何输出 点击发送按钮基本上没有任何反应,没有“输入名称”或任何错误消息【参考方案2】:好的,这应该可以工作
<?php
$mailto = "abcd@gmail.com"; /*PUT YOUR EMAIL IN HERE*/
$cc = "";
$bcc = "";
$subject = "enquiry";
$vname = "Website Contact Form";
$errors = array();
if($_POST)
if(!isset($_POST['name']) || $_POST['name'] == "")
$errors[] = "Please enter your name.";
if(isset($_POST['email']) && $_POST['email'] != "")
if(!preg_match('%^[a-zA-Z0-9._-]+@[a-zA-Z0-9-]+\.[a-zA-Z]2,4(\.[a-zA-Z]2,3)?(\.[a-zA-Z]2,3)?$%', $_POST['email']))
$errors[] = "Not valid email";
else
$errors[] = "Please enter your email";
if(!isset($_POST['message']) || $_POST['message'] =="" )
$errors[] = "Please enter the message.";
if(!$errors)
//send here your email...
echo "email sended";
?>
<div id='emailerror'>
<ul>
<?php
foreach($errors as $err)
echo "<li>$err</li>";
?>
</ul>
</div>
【讨论】:
工作很酷..提供适当的输出。将实施电子邮件部分以使其正常工作..谢谢 我很高兴听到这个消息,只需从服务器运行它就可以了,它的作品对我来说很完美,参考这个***.com/questions/712392/…【参考方案3】:如前所述,使用完整标签。此外,您应该在附加到它之前声明您的 $emailerror 变量:
$emailerror = "";
在代码的开头。
【讨论】:
以上是关于电子邮件 PHP 联系表错误作为随机输出的主要内容,如果未能解决你的问题,请参考以下文章