메일 전송 성공시 팝업
조회수 1166회
<?php
header("Location:http://www.studiojpg.co.kr");
// 빈 필드가 있는지 확인하는 구문
if(empty($_POST['name']) || // post로 넘어온 name값이 비었는지 확인
empty($_POST['email']) || // email값이 비었는지 확인
empty($_POST['phone']) || // phone값이 비었는지 확인
empty($_POST['message']) || // message값이 비었는지 확인
!filter_var($_POST['email'],FILTER_VALIDATE_EMAIL)) // 전달된 이메일 값이 유효한 이메일값인지 검증
{
echo "인수를 확인해주세요!";
return false;
}
// Cross-Site Scripting (XSS)을 방지하는 시큐어코딩
// strip_tags() -> 문자열에서 html과 php태그를 제거한다
// htmlspecialchars() -> 특수 문자를 HTML 엔터티로 변환
// 악의적인 특수문자 삽입에 대비하기 위함
$name = strip_tags(htmlspecialchars($_POST['name']));
$email_address = strip_tags(htmlspecialchars($_POST['email']));
$phone = strip_tags(htmlspecialchars($_POST['phone']));
$message = strip_tags(htmlspecialchars($_POST['message']));
$to = 'wnsgkcjswo@naver.com'; // 받는 측의 이메일 주소를 기입하는 부분
$email_subject = "FROM: $name"; // 메일 제목에 해당하는 부분
$email_body = "본 메일은 홈페이지 폼메일로부터 전송된 이메일입니다..\n\n"."세부정보는 다음과 같습니다.\n\nName: $name\n\nEmail: $email_address\n\nPhone: $phone\n\nMessage:\n$message";
$headers = "Reply-To: $email_address\r"; // 답장 주소
mail($to,'=?UTF-8?B?'.base64_encode($email_subject).'?=',$email_body,$headers);
return true;
?>
소스는 이렇습니다.
여기서 메일을 보내면 '성공적으로 전송되었습니다.'
이런 메세지를 뜨게 만들고 싶습니다. ㅠㅠ 어떻게 해야될까요
-
(•́ ✖ •̀)
알 수 없는 사용자 - 〉
1 답변
-
"메시지를 뜨게" 한다는 건 팝업 경고를 하나 띄운다는 말씀이시죠? 이건 정말 오래된 문제이고 조금만 검색해 보면 예제가 수천만 개 나오는 사례이기 때문에 여기서는 대략의 얼개만 보여 드리겠습니다.
(테스트해보지 않은 코드입니다. 시도해 보세요.)
20세기식 방법: 맨 끝에
return true;
대신 이걸 씁니다.header('Content-Type: text/html; charset=UTF-8'); echo "<script>alert('성공적으로 전송되었습니다.'); window.location.href='http://www.studiojpg.co.kr'</script>";
21세기식 방법: 이 PHP 스크립트를 ajax로 콜하도록 HTML 폼의 JS를 조정합니다. (PHP 소스는 메일발송 성공 시
echo 'success';
로 문자열을 반환한다고 가정)<script> var form = document.getElementById('send_mail'); form.addEventlistener('submit', function (e) { e.preventDefault(); var xmlhttp = new XMLHttpRequest(); var emailData = new FormData(e.target); xmlhttp.onreadystatechange = function() { if (this.readyState == 4 && this.status == 200) { if (this.responseText == 'success') { alert('성공적으로 전송되었습니다.'); window.location.href = 'http://www.studiojpg.co.kr'; } else { alert('실패적으로 전송되었습니다. 다시 해 주세요.'); return false; } } else { alert('서버 오류!! '+this.status); } }; xmlhttp.open("POST", "sendmail.php"); xmlhttp.send(emailData); }); </script>
댓글 입력