2011-09-06 69 views
1

我有一個聯繫表單,這是一個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; 
      } 
    ?> 

謝謝!

回答

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文件夾上傳的文件...因此不需要實際存儲該文件。

+0

@Zull我不想上傳東西。圖像附加到電子郵件,而不是存儲在服務器等。謝謝,但! – Stam

+0

@Stam:對不起,我的壞!永遠不要少,如果你想把圖像附加到電子郵件,你需要進行正常的上傳,但不是將圖像存儲到服務器,而是將它附加到電子郵件中......所以,你不要「移動上傳文件」到任何地方,您只需在您的電子郵件中添加附件即可! – Zuul

+0

好酷,我怎麼做最後的部分添加它實際上作爲附件? – Stam