새로고침시 다시 전송되는 폼메일... 채택완료
잘 작동되는 폼메일 플러그인을 찾았는데..
이게 원래 새창에 뜨는 폼메일이고 제출 버튼 누를시 새창이 꺼지는 형식입니다..
그런데 전 메인에 바로 넣고 싶어서 넣었더니
새로고침할때마다 입력했던 양식으로 계속 전송되네요ㅜㅜ
플러그인의 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 = "아래 링크에서 확인하세요.
"; 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개
index.php에 저렇게 코드를 넣는 것은 좋지않습니다
(메일을 보내지 않아도 필요없이 mailer.lib.php를 include하니까요)
빨강색 부분 삭제 후 아래처럼 바꾸고
alert("{$name}님의 상담이 접수되었습니다.", index.php");
메일 발송부분을 따로 떼어서 send_mail.php화일로 만들고
action을 변경하세요
댓글을 작성하려면 로그인이 필요합니다.
$str = $name.'님의 상담이 접수되었습니다.'; echo '';
초록색 부분을
echo 'location.href = '/';
이렇게 바꾸시면 경고창이 한 번 뜨고 페이지가 새로 고침이 일어납니다.
이게 싫으시면 php 코드들 몽땅 잘라내서 php 파일 하나 만드셔서 거기에 넣으세요.
그리고
답변에 대한 댓글 2개
이 부분에 w가 고정으로 있는 건가요?
저게 있으면 게속 해당 php가 실행될 겁니다.
<input type="hidden" name="mode" value="" /> 여기에 값을 없애시고
아래 스크립트에 한 줄 추가해 보세요.
function fsubmit(f)
{
document.getElementByName("mode")[0].value = "w";
return true;
}
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인
파일 분리해서 연결하니 제출 누르면 404에러 뜨구요..