形式与附件给出混合的结果

时间:2013-11-21 02:09:56

标签: php forms attachment

您好,我是一名新手网络编码员,最近为客户设计并编码了一个网站。他们要求联系页面上的表单包含文件附件上传功能。 我对PHP不太熟悉,但我做了一些研究,并设法在网上找到一些我已在我的网站上实现的编码来完成这项工作。我已经将我的电子邮件作为接收器插入并测试了表格,并且附件文件正常工作,允许文件通过:)。但是,当消息通过说

时,我似乎在我的电子邮件帐户(gmail)中收到了一条警告消息

“小心这条消息。类似的消息被用来窃取人们的个人信息。除非你信任发件人,否则不要点击链接或回复个人信息。”

我的问题是如何避免这种警报? 一旦我将电子邮件更改为他的帐户作为接收者,我不希望我的客户端必须处理此警报。此外,我已收到一封随机的人发来的电子邮件,要求我播放视频游戏垃圾邮件?我怎么能避免这个? (我试图实施一个recaptcha,但我不喜欢这些,因为它们通常很难阅读)

为什么要求“姓名”和“电子邮件”的输入字段未显示在我收到的电子邮件中?只有“消息”字段信息被转发到我的电子邮件。

非常感谢任何帮助。 提前谢谢。

这是我目前所拥有的PHP文件,似乎在某种程度上起作用;

<?php
if(isset($_POST['submit']))
{
    //The form has been submitted, prep a nice thank you message
    $output = '<h1>Thanks for your file and message!</h1>';
    //Set the form flag to no display (cheap way!)
    $flags = 'style="display:none;"';

    //Deal with the email
    $to = 'christianmelchiordesign@gmail.com';
    $subject = 'a file for you';

    $message = strip_tags($_POST['message']);
    $name = strip_tags($_POST['name']);
    $email = strip_tags($_POST['email']);
    $attachment = chunk_split(base64_encode(file_get_contents($_FILES['file']['tmp_name'])));
    $filename = $_FILES['file']['name'];

    $boundary =md5(date('r', time())); 

    $headers = "From: netzeroliving.ca\r\nReply-To: netzeroliving.ca";
    $headers .= "\r\nMIME-Version: 1.0\r\nContent-Type: multipart/mixed; boundary=\"_1_$boundary\"";

    $message="This is a multi-part message in MIME format.

--_1_$boundary
Content-Type: multipart/alternative; boundary=\"_2_$boundary\"

--_2_$boundary
Content-Type: text/plain; charset=\"iso-8859-1\"
Content-Transfer-Encoding: 7bit

$message

--_2_$boundary--
--_1_$boundary
Content-Type: application/octet-stream; name=\"$filename\" 
Content-Transfer-Encoding: base64 
Content-Disposition: attachment 

$attachment
--_1_$boundary--";

    mail($to, $subject, $message, $headers);
}
?>

^^^我必须注意,上面的PHP编码放在body标签之外...不确定是否应该将它放在body标签内^^^

<form enctype="multipart/form-data" action="<?php echo $_SERVER['PHP_SELF'];?>"    method="post"   <?php echo $flags;?>>


            <p class="name">
                <input type="text" name="name" id="name" />
                <label for="name">Name</label>
            </p>

            <p class="email">
                <input type="text" name="email" id="email" />
                <label for="email">E-mail</label>
            </p>


            <p>
                <label for="message">Message</label> 
                <textarea name="message" id="message" cols="20" rows="8"></textarea>
            </p>

            <p>
                <label for="file">File</label> 
                <input type="file" name="file" id="file">
            </p>

            <p>
                <input type="submit" name="submit" id="submit" value="send">
            </p>
</form>

^^^以上编码放在body标签内^^^

1 个答案:

答案 0 :(得分:0)

将您的发件人地址设置为实际的电子邮件地址,例如NOREPLY@netzeroliving.ca。现在,您似乎在没有正确的电子邮件地址的情况下发送邮件。

此外,将主题更改为听起来不像病毒垃圾邮件的内容。

关于名称/电子邮件未显示,它似乎没有放在邮件中的任何位置(查找$ email和$ name)。

关于垃圾邮件,check out this question