테스트 사이트 - 개발 중인 베타 버전입니다

새로고침시 다시 전송되는 폼메일... 채택완료

명심 6년 전 조회 2,696

잘 작동되는 폼메일 플러그인을 찾았는데..

이게 원래 새창에 뜨는 폼메일이고 제출 버튼 누를시 새창이 꺼지는 형식입니다..

그런데 전 메인에 바로 넣고 싶어서 넣었더니

새로고침할때마다 입력했던 양식으로 계속 전송되네요ㅜㅜ

플러그인의 index.php 소스 첨부합니다..

 

//ver1.0 161114 @_9173543234

$to = '아이디@naver.com'; //받을메일주소

//구글 리캡차 : https://www.google.com/recaptcha/ $recaptcha_site_key = ''; $recaptcha_secret_key = '';

$sz_table = 'sz_contactus'; //게시판 $sz_contactus_table = $g5['write_prefix'].$sz_table;

@include_once('./create_db.php');

function sz_contact_us_insert_write($insert) {     global $g5;          $bo_table = $insert['bo_table'];     $write_table = $g5['write_prefix'].$bo_table;     $wr_num = get_next_num($write_table);     $wr_subject = addslashes(trim($insert['wr_subject']));     $wr_content = addslashes(trim($insert['wr_content']));          $sql = " insert into $write_table                 set wr_num = '$wr_num',                      wr_option = 'html1,,',                      wr_subject = '$wr_subject',                      wr_content = '$wr_content',                      mb_id = '".rand()."',                      wr_name = '".rand()."',                      wr_datetime = '".G5_TIME_YMDHIS."',                      wr_last = '".G5_TIME_YMDHIS."',                      wr_ip = '{$_SERVER['REMOTE_ADDR']}' ";     sql_query($sql);          $wr_id = sql_insert_id();

    sql_query(" update $write_table set wr_parent = '$wr_id' where wr_id = '$wr_id' ");     sql_query(" update {$g5['board_table']} set bo_count_write = bo_count_write + 1 where bo_table = '{$bo_table}' ");          return $wr_id;      }

if ($_POST['mode']=='w') {        if (!$_POST['name'] or !$_POST['email'] or !$_POST['phone'] or !$_POST['message']) die('Err');          if (isset($_POST['g-recaptcha-response']))         $captcha = $_POST['g-recaptcha-response'];          if (!$captcha)         alert('스팸차단코드가 틀렸습니다.');          $url = 'https://www.google.com/recaptcha/api/siteverify';     $data = array('secret' => $recaptcha_secret_key, 'response' => $captcha);

    $ch = curl_init();     curl_setopt($ch, CURLOPT_URL, $url);     curl_setopt($ch, CURLOPT_POST, sizeof($data));     curl_setopt($ch, CURLOPT_POSTFIELDS, $data);     curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);     $result = curl_exec($ch);     curl_close($ch);

    $obj = json_decode($result);

    if ($obj->success!=1) die('Err');          $name = trim($_POST['name']);     $email = trim($_POST['email']);     $phone = trim($_POST['phone']);     $message = conv_content(trim($_POST['message']), 2);          $strsub = '상담 문의'.$name;     $strcon = '

아래 링크에서 확인하세요.

              

 

              

상담 정보:                이름: '.$name.'                이메일주소: '.$email.'                연락처: '.$phone.'                메시지: '.$message.'

';          $insert = array(             'bo_table' => $sz_table,             'wr_subject' => $strsub,             'wr_content' => $strcon     );     $sz_id = sz_contact_us_insert_write($insert);          $href = G5_BBS_URL.'/board.php?bo_table='.$sz_table.'&wr_id='.$sz_id;     $strbody = "

아래 링크에서 확인하세요.

                

 

                

".$href."

";          mailer($name, 'noreply@yourdomain.com', $to, $strsub, $strbody, 1);          $str = $name.'님의 상담이 접수되었습니다.';     echo ''; }

include_once('./_head.php');

add_stylesheet(''," target="_blank" rel="noopener noreferrer">https://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.min.css">', 0); add_stylesheet('', 1);

?>

   

 CONTACT US

    

                      
            

이용하시면서 불편한 사항이나 개선점이 있다면 언제든지 알려주세요. 이메일을 함께 남겨주시면, 답변을 받아 보실 수 있습니다.

        
        
                         
                             
        
             
                         
                             
        
             
                         
                             
        
        
                         
                             
        
        
                         
                
            
        
        
           
                   

   

" target="_blank" rel="noopener noreferrer">https://www.google.com/recaptcha/api.js?hl=ko'>

 

 

붉은색 부분을 고쳐야 하나 해봤지만 잘 안되네요..

검색해보니 onclick 형식으로 바꾸면 된다던데..? 어찌해야할지 모르겠습니다ㅠㅠ

댓글을 작성하려면 로그인이 필요합니다.

답변 2개

채택된 답변
+20 포인트
6년 전

index.php에 저렇게 코드를 넣는 것은 좋지않습니다

(메일을 보내지 않아도 필요없이 mailer.lib.php를 include하니까요)

빨강색 부분 삭제 후 아래처럼 바꾸고

alert("{$name}님의 상담이 접수되었습니다.", index.php");

 

메일 발송부분을 따로 떼어서 send_mail.php화일로 만들고

action을 변경하세요

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

    $str = $name.'님의 상담이 접수되었습니다.';     echo '';

 

초록색 부분을

echo 'location.href = '/';

이렇게 바꾸시면 경고창이 한 번 뜨고 페이지가 새로 고침이 일어납니다.

 

이게 싫으시면 php 코드들 몽땅 잘라내서 php 파일 하나 만드셔서 거기에 넣으세요.

그리고 이렇게 바꾸시면 됩니다.

로그인 후 평가할 수 있습니다

답변에 대한 댓글 2개

명심
6년 전
이렇게 했떠니 경고창도 안뜨고 새로고침하면 또 반복전송 되네요..ㅠㅠ
파일 분리해서 연결하니 제출 누르면 404에러 뜨구요..
왕계란
6년 전
<input type="hidden" name="mode" value="w" />
이 부분에 w가 고정으로 있는 건가요?
저게 있으면 게속 해당 php가 실행될 겁니다.
<input type="hidden" name="mode" value="" /> 여기에 값을 없애시고
아래 스크립트에 한 줄 추가해 보세요.
function fsubmit(f)
{
document.getElementByName("mode")[0].value = "w";
return true;
}

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인