[英]PHP- Send Mail after some Validation
我是PHP新手,无论如何都不是专家。 无论如何,我正在构建一个PHP和HTML联系人表单,并且在验证字段输入(修整,删除,htmlspecchars ..)的方式上感到困惑。 无论如何,这是我的代码,请放心,我对此很菜鸟。
<?php
// define variables and set to empty values
$name = $email = $web = $telephone = $pages = $completion_date = $update_option = $hosting_option = $domain_option = $text = "";
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$name = test_input($_POST["name"]);
$email = test_input($_POST["email"]);
$web = test_input($_POST["web"]);
$telephone = test_input($_POST["telephone"]);
$pages = test_input($_POST["pages"]);
$completion_date = test_input($_POST["completion_date"]);
$update_option = test_input($_POST["update_option"]);
$hosting_option = test_input($_POST["hosting_option"]);
$domain_option = test_input($_POST["domain_option"]);
$text = test_input($_POST["text"]);
}
function test_input($data) {
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}
$msg = $name . "\n";
$msg = $email . "\n";
$msg = $web . "\n";
$msg = $telephone . "\n";
$msg = $pages . "\n";
$msg = $completion_date . "\n";
$msg = $update_option . "\n";
$msg = $hosting_option . "\n";
$msg = $domain_option . "\n";
$msg = $text . "\n";
$recipient = "myemail@mydomain.com";
$subject = "Contact Has Been Made..";
$mailheaders = "MIME-Version: 1.0" . "\r\n";
$mailheaders = "Content-type:text/html;charset=iso-8859-1" . "\r\n";
$mailheaders = "From: <myemail@mydomain.com>, Reply-To: <myemail@mydomain.com>" . "\r\n";
$mailheaders = "Cc: <$email>" . "\r\n";
mail($recipient, $subject, $msg, $mailheaders);
?>
直到$ msg的定义都还不错,您还是要覆盖它。
在第一个等号(=)之前加一个点(。)
$msg = $name . "\n";
$msg .= $email . "\n";
$msg .= $web . "\n";
... etc
在这种情况下,不需要带stripslashes
和htmlspecialchars
。 毕竟,您不会输出任何包含POSTed值的HTML。
表单验证的问题是,例如,我可以在email字段中写任何东西,并且仍然可以验证。 您应该对所有字段进行个案验证,例如,使用电子邮件字段
if (filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) {
// The email is valid
$email = $_POST['email'];
}
等等。 如果您不需要他们成为他们所说的样子,则可以忽略这一点。 除此之外,它看起来还不错。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.