2012-10-17 3 views
1

PHP를 사용하여 POST 메소드를 통해 전송하는 이메일 문의 양식을 작성 중입니다. 양식이 ../register.shtml에 있고 작업이 ../register.php로 리디렉션 됨PHP 기반 이메일 전송 중단하기

register.php가 (양식을 통해서가 아닌 것처럼) 직접 열면 빈 이메일이 다음 주소로 전송됩니다. 내받은 편지함. 이것을 막을 수있는 방법이 있습니까?

감사합니다. 무엇 당신이 찾고있는

+0

양식이 게시되었는지 확인하고 입력 내용의 유효성을 검사합니다. – MrCode

답변

2

../register.shtml 페이지의 양식에 숨겨진 입력 필드를 만듭니다. 그런 다음 register.php에서 숨겨진 입력 값이 설정되어 있는지 확인하십시오. 그렇다면 양식을 처리하십시오. 설정되지 않은 경우 (사용자가 양식에서 오지 않았다면) 원래 페이지로 다시 리디렉션됩니다. 여기

가 일부 코드입니다 : 이메일이있는 경우 register.php 스크립트에서 ../register.php

if(!isset($_POST['cameFromForm'])) { 
    header('location: http://www.example.com/register.shtml'); 
    exit(); 
} else { 

    .... your send mail code (or whatever register.php does) 

} 
1
if ($_SERVER['REQUEST_METHOD'] == "POST") { 
    ..... 
} 
0

...

if(!empty($_POST)){ 
    // send email logic 
} 

뭔가가 페이지에 게시하면 이메일 만 보내 그런 식으로.

+2

'$ _POST' 배열은 항상 설정 되었기 때문에 항상 true로 평가되지만 반드시 요소를 포함 할 필요는 없습니다. – MrCode

+0

고마워, 해결 했어. – clementine

1

의 상단에,

<form action="register.php" method="POST"> 

... your form fields 

<input type="hidden" name="cameFromForm" value="Yes" /> 
</form> 

그런

../register.shtml에, 당신은 확인해야합니다 메시지가 포함되어 있고 리디렉션이 양식에 다시없는 경우 :

분명히 양식의 실제 필드 중 하나로 '메시지'를 변경하십시오.

모든 입력란을 확인하거나 모든 필수 입력란을 확인하고자 할 수도 있습니다. 리디렉션 URL을 변경하여 사용자에게 입력해야하는 필드를 알려줄 수 있습니다.