Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
HTML Post操作将我发送到php表单_Php_Html_Forms_Email_Contact - Fatal编程技术网

HTML Post操作将我发送到php表单

HTML Post操作将我发送到php表单,php,html,forms,email,contact,Php,Html,Forms,Email,Contact,我是一个完全的PHP新手,我只是想要一个简单的电子邮件联系形式,将显示一个错误,如果一个必填字段没有输入,并会给出一个感谢消息,如果电子邮件发送 当我点击我的提交按钮时,邮件确实会被发送,但网站会直接重定向到/send-email.php页面,该页面是空白且无用的。如果表单未填写,则必填表单字段似乎也不会阻止发送电子邮件 HTML表单代码: Php文件 <?php $recipient = "contact@mysite.com"; $name = filter_var($_POST

我是一个完全的PHP新手,我只是想要一个简单的电子邮件联系形式,将显示一个错误,如果一个必填字段没有输入,并会给出一个感谢消息,如果电子邮件发送

当我点击我的提交按钮时,邮件确实会被发送,但网站会直接重定向到/send-email.php页面,该页面是空白且无用的。如果表单未填写,则必填表单字段似乎也不会阻止发送电子邮件

HTML表单代码:

Php文件

<?php 

$recipient = "contact@mysite.com";

$name = filter_var($_POST["name"], FILTER_SANITIZE_STRING);
$email = filter_var($_POST["email"], FILTER_SANITIZE_EMAIL);
$website = filter_var($_POST["website"], FILTER_SANITIZE_URL);
$company = filter_var($_POST["company"], FILTER_SANITIZE_STRING);
$message = filter_var($_POST["message"], FILTER_SANITIZE_STRING);

$headers = 'From: '.$name.' <'.$email.'>' . "\r\n";
$headers .= 'Reply-To: '.$email.'' . "\r\n";
$headers .= 'X-Mailer: PHP/' . phpversion();

$subject = "New email from contact form";

$email_content = "Name: $name\n";
$email_content .= "Email: $email\n";
$email_content .= "Website: $website\n";
$email_content .= "Company: $company\n\n";
$email_content .= "Message:\n$message\n\n\n";

if(mail($recipient, $subject, $email_content, $headers)){
echo "Thanks for the email, we'll get back to as soon as possible!";
}
?>

任何正确方向上的帮助都将不胜感激

检查是否有空输入。尝试使用if-else语句。例如

if($name == '')
{
    echo "Please fill in name";
}

else if($var == '')
{
    //error message
}
或者你可以试试

if($name == '' || $email == '' || $var == '')
{
    echo "Please fill in all the blank";
}

我对PHP也很陌生,所以这只是一个简单的检查。希望能有帮助

好的,谢谢,我认为html代码中的必填字段应该足够了。不过,我遇到的更大的问题是,它不会停留在我的主页上,而是将我带到send-email.php页面。这应该会发生吗?编辑:比如,回声应该出现在哪里?我以为回显的文本会在我的浏览器中弹出?您需要前面提到的if子句,如果您想显示错误/成功消息,您应该将其保存到该页面上的会话中,然后使用标题重定向到您想要结束的页面,然后回显会话中的消息。这样您就有了$\u会话['email_success']=感谢您的电子邮件,我们会尽快返回!;header'Location:link/to/final/page.php';退出;在目标页面上,您会执行以下操作:if!empty$_SESSION['email_success']{echo$_SESSION['email_success'];$_SESSION['email_success']=NULL;}我理解需要一个if子句,但是会话对我来说没有意义。非常感谢这个例子,我想我可以从这里弄明白:如果你还没有并且想使用会话,你需要在你计划使用它的任何页面上启动它。将会话\u start;放在设置并使用$\u会话的页面上。太棒了!我是co非常新,所以这当然有帮助,谢谢!
if($name == '' || $email == '' || $var == '')
{
    echo "Please fill in all the blank";
}