나는 연락처 양식이 필요한 경우 내가 사용하는 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;
}
?>
고마워요!
@ Zull 뭔가를 업로드하고 싶지 않습니다. 이미지는 서버 등에 저장되지 않고 전자 메일에 첨부됩니다. 감사합니다! – Stam
@Stam : 죄송합니다. 내 잘못입니다! 이메일에 이미지를 첨부하려면 일반 업로드를해야하지만 이미지를 서버에 저장하는 대신 전자 메일에 첨부하십시오. 따라서 "moveuploadedfile"을 사용하지 마십시오. 어디서나, 이메일에 첨부 파일을 추가하기 만하면됩니다! – Zuul
좋습니다. 실제로 첨부 파일로 추가하는 마지막 부분은 어떻게해야합니까? – Stam