폼메일 질문드립니다.
본문
안녕하세요
<form ~~ action="send.php">
</form>
폼을 넘기고
send.php 페이지는
<?php
include_once("./_common.php");
include "mailer.php";
~~
처럼 사용을 하고 있습니다.
근데 간혹 메일이 동시에 4~5개씩 들어올때도 있더라구요
혹시 1분에 한번씩만 접수를 할 수 있도록 제한을 걸 수 있을지요?
그리고 정상적인 루트 말고
해당 경로의 send.php 를 입력하면 메일이 그냥 발송해 버리던데
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
이걸 넣어도 적용은 안되더라구요.. (저게 맞는 기능인지는 잘 모르겠습니다.)
염치없지만..
혹시 알고 계신 고수님들 힌트나 도움 부탁드리겠습니다. ㅠ
답변 3
두가지 방법이 있을 것 같습니다.
DB에 저장이 되면 저장된 IP와 접수 하려는 IP를 체크하여 이전 접수 시간을 체크하면 될것같구요, 세션을 이용한 방법도 있습니다.
<?php
session_start();
if (isset($_SESSION['last_req']) && (time() - $_SESSION['last_req']) < 60) {
echo "<script>alert('1분에 한번씩만 접수하실 수 있습니다. 잠시 후 다시 시도해주세요.'); history.back();</script>";
exit;
}
// 마지막 시간을 저장
$_SESSION['last_req'] = time();
include_once("./_common.php");
include "mailer.php";
~
~
~
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
최상단에 넣어주셔야 합니다. <?php 다음에요.
!-->접수 정보가 디비에 들어간다면 같은 정보가 있으면 디비랑 메일 발송이 안되게 처리를 하시면 될거 같습니다. 해당 질문만으로는 자세히 알 수가 없어서 기본적인 조언만 받으실수 있으실거 같습니다.
세션도 좋고 발송 내역을 별도로 저장하시는것도 좋을것 같네요.
답변을 작성하시기 전에 로그인 해주세요.