2014-03-06 4 views
1

전자 메일 주소의 유효성을 검사 할 수는 있지만 위생적이지는 않습니다. 예를 들어 간단한 테스트를하고 다음과 같은 전자 메일을 입력 할 때와 같습니다. joeschm//[email protected]을 이메일 주소 입력란에 입력하면 이메일 주소가 joeschm//[email protected] 인 이메일이 발송됩니다.PHP 전자 메일 사용자 입력 양식을 처리하는 함수 인/sanitization 및 유효성 검사가 위생적이지 않은 경우

//form validation vars 
$formok = true; 
$errors = array(); 

//form data 
$email = $_POST['email']; 

//validate email address is not empty 
if(empty($email)){ 
    $formok = false; 
    $errors[] = "You have not entered an email address"; 
//validate email address is valid 
}elseif(!filter_var($email, FILTER_VALIDATE_EMAIL)){ 
    $formok = false; 
    $errors[] = "You have not entered a valid email address"; 
    //if email address input field is not empty and the email is valid, sanitize the email 
}else{ 
    filter_var($email, FILTER_SANITIZE_EMAIL); 
    $formok = true; 
} 
+0

RTFM : [filter_var()] (http://php.net/filter_var) ** 필터링 된 데이터. ** RETURNS ** 당신은 그 반환 가치를 전혀 잡아 내지 못하고 있습니다. –

답변

2
$email = filter_var($email, FILTER_SANITIZE_EMAIL); 

당신은 filter_var의 반환 값을 캡처해야합니다

여기에 관련 코드입니다.

+0

나는 Netbeans 툴팁이 보여준 것처럼 이것을 가장 좋은 도구로 생각한다 –

+0

아 유레카! 덕분에 – user3376521

1
$email = mysqli_real_escape_string($_POST['email']); 

현재 코드 대신 사용하십시오. 그것은 사용자가 이메일 입력에 넣은 사고를 대체하지는 않지만 저장을 위해 데이터베이스에 게시하는 것이 안전한지 확인합니다.

+0

지금 당장 나는 로컬 호스트에서 실행되는 microsoft webmatrix를 사용하여 구축하고있는 사이트를 테스트하고 있습니다. 테스트 메일 서버 도구를 사용하여 내 연락처 양식의 메일 기능을 테스트합니다. 나중에 필요할 때 구현할 수도 있지만, 지금은 데이터베이스를 사용하지 않을 것입니다. 그 함수에 대한 문서를 보면서 mysql 데이터베이스를 구현해야 할 것처럼 보입니다. – user3376521