这是我如何将这个反垃圾邮件添加到我的PHP?

时间:2013-05-26 03:22:23

标签: php forms

不按照我应该的方式启动我的PHP,谢谢你的帮助...

我把它放在html

的形式中
<p class="antispam">Leave this empty:
<br /><input name="url" /></p>

这在css中

.antispam { display:none;}

问题是注释部分,如果url字段为空正确的PHP?
{curly}括号似乎不适合我。

<?php

$name = $_POST['name'];
$email = $_POST['email'];
$message = nl2br($_POST['message']);
$todayis = date("l, F j, Y, g:i a") ;
$subject = "Message from Your Website";
$body = "From $name, \n\n$message";
$headers = 'From: '.$email.'' . "\r\n" .
    'Reply-To: '.$email.'' . "\r\n" .
    'Content-type: text/html; charset=utf-8' . "\r\n" .
    'X-Mailer: PHP/' . phpversion();

// if the url field is empty
if(isset($_POST['url']) && $_POST['url'] == ''){

mail("me@my.com", $subject, $body, $headers);

}
?>
<!--My callback -->
<div id="mail_response">
    <h3>Thank you <?php echo $name ?>!</h3><br />
    <p>I will answer your message soon as possible.</p><br /><br /><br />
    <h5>Message sent on: </h5>
    <p><?php echo $todayis ?></p>
</div>

1 个答案:

答案 0 :(得分:1)

你可以试试这个

if(isset($_POST['url']) && $_POST['url'] == ''){
    if( mail("me@my.com", $subject, $body, $headers) )
    {
        ?>
            <div id="mail_response">
                <!-- Write html here -->
            </div>
        <?php
    }
    else
    {
        // something went wrong
    }
}

另外,你不应该使用

'Reply-To: '.$email.'' . "\r\n" .

因为,这是发件人的电子邮件地址 相反,你可以使用

$headers = 'From: ' . $email . '\r\n' .
'Reply-To: nobody@example.com' . '\r\n' .
'Content-type: text/html; charset=utf-8' . '\r\n' .
'X-Mailer: PHP/' . phpversion();

此外,您不会检查表单字段,是否为空,并且过滤用户输入是一种很好的做法。

此外,这不是打击垃圾邮件的好方法,而是可以使用captcha