PHP-메일전송폼3
PHP-메일전송폼3탄
<?php
// h() 함수 레시피 218를 불러옵니다 레시피 041.
require_once '../../../../lib/h.php';
// checkInput() 함수를 불러옵니다.
require_once '../../../../lib/checkInput.php';
// 메일 전송용 sendmail() 함수를 불러옵니다.
require_once '../../../../lib/sendmail.php';
// 받는이의 메일 주소
$mailTo = 'newuser@example.kr';
// 메일 제목
$subject = '문의 사항이 수신되었습니다.';
// Return-Path로 지정할 메일 주소
$returnMail = $mailTo;
// 클릭재킹(clickjacking) 대책 레시피 287을 마련합니다.
header('X-FRAME-OPTIONS: SAMEORIGIN');
// 세션을 시작합니다.
session_start();
// POST된 데이터를 확인합니다.
$_POST = checkInput($_POST);
// 토큰을 확인합니다.
if (isset($_POST['token']) && isset($_SESSION['token'])) {
$token = $_POST['token'];
if ($token != $_SESSION['token']) {
die('잘못된 액세스입니다.');
} else {
die('잘못된 액세스입니다.');
}
// 변수에 세션 변수를 대입합니다.
$name = $_SESSION['name'];
$email = $_SESSION['email'];
$comment = $_SESSION['comment'];
// mbstring의 한국어 설정을 합니다.
mb_language('ko');
mb_internal_encoding('UTF-8');
// 전송 결과를 알리는 변수를 초기화합니다.
$message = '';
// 메일의 전송과 결과를 확인합니다.
$result = sendmail($name, $email, $mailTo, $subject, $comment, $returnMail);
if ($result) {
$message = '전송 완료!';
// 세션 변수를 종료 레시피 227합니다.
$_SESSION = array();
session_destroy();
} else {
$message = '전송 실패';
}
?>
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1.0">
<title>메일 전송 폼</title>
</head>
<body>
<div id="mailbox">
<h1>메일 전송</h1>
<p><?php echo h($message); ?></p>
</div>
</body>
</html>