联系表格与文件附件?

时间:2011-09-06 17:44:04

标签: forms php

我有一个联系表单,如果我需要联系表单,我会使用wordpress上的页面模板。一切正常,但我想添加添加文件附件的功能,所以当用户填写他们的名字等时,他们可以上传照片,该照片将作为附件发送给我。

我有一个完美的工作联系表单,我只想添加该功能。我所有的当前代码都做了所有这一切,它将他们的电子邮件地址和他们的消息的人的姓名发送到我的电子邮件,我所缺少的是附件功能。我一直在寻找很多具有此功能的联系表单,但是将该功能集成到我的sendmail.php似乎非常困难,因为编码风格完全不同。这是一个实际的演示。 demo

这是我的php文件,里面有表格。         

<?php get_header(); ?>
 <script type="text/javascript">
         $(document).ready(function(){
              $('#contact').ajaxForm(function(data) {
                 if (data==1){
                     $('#success').fadeIn("slow");
                     $('#bademail').fadeOut("slow");
                     $('#badserver').fadeOut("slow");
                     $('#contact').resetForm();
                     }
                 else if (data==2){
                         $('#badserver').fadeIn("slow");
                      }
                 else if (data==3)
                    {
                     $('#bademail').fadeIn("slow");
                    }
                    });
                 });
        </script>
<!-- begin colLeft -->
    <div id="colLeft">
    <!-- Begin .postBox -->
        <div class="postBox">
            <div class="postBoxTop"></div>
            <div class="postBoxMid">
                <div class="postBoxMidInner first clearfix">
            <h1>Contact Us</h1>
            <p><?php echo get_option('alltuts_contact_text')?></p>

            <p id="success" class="successmsg" style="display:none;">Your email has been sent! Thank you!</p>

            <p id="bademail" class="errormsg" style="display:none;">Please enter your name, a message and a valid email address.</p>
            <p id="badserver" class="errormsg" style="display:none;">Your email failed. Try again later.</p>

            <form id="contact" action="<?php bloginfo('template_url'); ?>/sendmail.php" method="post">
            <label for="name">Your name: *</label>
                <input type="text" id="nameinput" name="name" value=""/>
            <label for="email">Your email: *</label>

                <input type="text" id="emailinput" name="email" value=""/>
            <label for="comment">Your message: *</label>
                <textarea cols="20" rows="7" id="commentinput" name="comment"></textarea><br />
            <input type="submit" id="submitinput" name="submit" class="submit" value="SEND MESSAGE"/>
            <input type="hidden" id="receiver" name="receiver" value="<?php echo strhex(get_option('alltuts_contact_email'))?>"/>
            </form>

            </div>
        </div>
        <div class="postBoxBottom"></div>
        </div>
     <!-- End .postBox -->
    </div>
    <!-- end colleft -->

            <?php get_sidebar(); ?> 

<?php get_footer(); ?>

这是处理邮件发送的文件。

    <?php
    if(isset($_POST['submit'])) {
      error_reporting(E_NOTICE);
      function valid_email($str)
      {
      return ( ! preg_match("/^([a-z0-9\+_\-]+)(\.[a-z0-9\+_\-]+)*@([a-z0-9\-]+\.)+[a-z]{2,6}$/ix", $str)) ? FALSE : TRUE;
         }
      if($_POST['name']!='' && $_POST['email']!='' && valid_email($_POST['email'])==TRUE && strlen($_POST['comment'])>1)
      {
          $to = preg_replace("([\r\n])", "", hexstr($_POST['receiver']));
          $from = preg_replace("([\r\n])", "", $_POST['email']);
          $subject = "Website contact message from ".$_POST['name'];
          $message = $_POST['comment'];

          $match = "/(bcc:|cc:|content\-type:)/i";
            if (preg_match($match, $to) ||
                preg_match($match, $from) ||
                preg_match($match, $message)) {
              die("Header injection detected.");
            }
          $headers = "From: ".$from."\r\n";
          $headers .= "Reply-to: ".$from."\r\n";

    if(mail($to, $subject, $message, $headers))
          {
              echo 1; //SUCCESS
          }
          else {
              echo 2; //FAILURE - server failure
          }
      }
      else {
      echo 3; //FAILURE - not valid email

      }
      }else{
         die("Direct access not allowed!");
       }
        function hexstr($hexstr) {
              $hexstr = str_replace(' ', '', $hexstr);
              $hexstr = str_replace('\x', '', $hexstr);
              $retstr = pack('H*', $hexstr);
              return $retstr;
            }
  ?>

谢谢!

2 个答案:

答案 0 :(得分:1)

您可以阅读这个简单的教程,了解在当前表单中添加文件上传支持需要做些什么:

http://www.tizag.com/phpT/fileupload.php

希望它有所帮助!

<强> EDITED


上传过程结束后,你可以这样做:

if (file_exists($_FILES['uploaded']['tmp_name'])) {
    $mail->AddAttachment($_FILES['uploaded']['tmp_name'], $_FILES['uploaded']['name']);
}

这样做是通过从PHPMailer调用AddAttachment并使用刚刚从服务器的TMP文件夹上传的文件来为电子邮件添加附件...因此不需要实际存储文件。

答案 1 :(得分:0)

您可以使用

http://wordpress.org/plugins/contact-form-7/

它有一个上传字段选项以及所有验证,非常易于使用。

您只需要输入短代码,就可以随时随地使用联系表格。