繁体   English   中英

PHP-经过一些验证后发送邮件

[英]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

在这种情况下,不需要带stripslasheshtmlspecialchars 毕竟,您不会输出任何包含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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM