2011-09-06 6 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

는 희망이 도움이!

당신이 이렇게 할 수있는,

업로드 프로세스 후

편집 :

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

이 PHPMailer에서 AddAttachment를 호출하여 이메일에 첨부 파일을 추가하는 것입니다 무엇을, 서버의 TMP 폴더에서 방금 업로드 한 파일을 사용하면 파일을 실제로 저장할 필요가 없습니다.

+0

@ Zull 뭔가를 업로드하고 싶지 않습니다. 이미지는 서버 등에 저장되지 않고 전자 메일에 첨부됩니다. 감사합니다! – Stam

+0

@Stam : 죄송합니다. 내 잘못입니다! 이메일에 이미지를 첨부하려면 일반 업로드를해야하지만 이미지를 서버에 저장하는 대신 전자 메일에 첨부하십시오. 따라서 "moveuploadedfile"을 사용하지 마십시오. 어디서나, 이메일에 첨부 파일을 추가하기 만하면됩니다! – Zuul

+0

좋습니다. 실제로 첨부 파일로 추가하는 마지막 부분은 어떻게해야합니까? – Stam

0

당신은 정말 사용하기 쉽고,

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

그것은 업로드 필드에 대한 옵션뿐만 아니라 모든 검증을 가지고 사용할 수 있습니다.

단지 shortcode를 입력하면 원하는 곳 어디서나 연락처 양식을 사용할 수 있습니다.