2013-04-23 2 views
0

PHP 등록 시스템을 구축 중입니다. 내 웹 사이트에 새로운 사용자가 등록되면 알림 이메일을 보내드립니다. 그러나 문제는 사용자가 아무 것도 입력하지 않으면 나에게도 이메일을 보냅니다. 이 문제를 어떻게 극복합니까?알림 메일을 보내기 전에 PHP 등록 유효성 확인

유효성 검사 부분입니다.

/*Validation Begins*/ 
if(empty($_POST) === false) { 
     $required_fields = array('school_name', 'mailing_address', 'postcode', 'courier_address', 'courier_postcode', 'courier_postcode', 'phonenumber', 'faxnumber', 'email', 'website', 'principal_fullname', 'principal_phonenumber', 'principal_email'); 
     foreach($_POST as $key=>$value){ 
      if(empty($value) && in_array($key, $required_fields) === true){ 
       mysql_close(); 
       ?> 
       <script type="text/javascript"> 
       alert("Fields marked with an asterisk are required"); 
       history.back(); 
       </script> 
       <?php 
      } 
    } 

아래는 삽입 기능과 메일 기능입니다.

function register_school($register_data){ 
$fields = '`' . implode('`, `', array_keys($register_data)) . '`'; 
$data = '\'' . implode('\', \'', $register_data) . '\''; 

mysql_query("INSERT INTO `schools_info` ($fields) VALUES ($data)"); 

    ?> 
    <script type='text/javascript'> 
    alert("Registration Successful!"); window.location.href = '/registration-success/'; 
    </script> 
    <?php 
    $schoolname = $_POST['school_name']; 
    $mailing_address = $_POST['mailing_address']; 
    $postcode = $_POST['postcode']; 
    $courier_address = $_POST['courier_address']; 
    $phonenumber = $_POST['courier_postcode']; 
    $faxnumber = $_POST['faxnumber']; 
    $email = $_POST['email']; 
    $website = $_POST['website']; 
    $principal_fullname = $_POST['principal_fullname']; 
    $principal_phonenumber = $_POST['principal_phonenumber']; 
    $principal_email = $_POST['principal_email']; 

    $to = "[email protected]"; 
    $subject = "New Registered School"; 
    $message = "School Name: $schoolname\r\nSchool Address: $mailing_address\r\nPostcode: $postcode\r\nCourier Address: $courier_address\r\nCourier Postcode: $courier_postcode\r\nPhone Number: $phonenumber\r\nFax Number: $faxnumber\r\nEmail: $email\r\nWebsite: $website\r\nPrincipal Name: $principal_fullname\r\nPrincipal Phone Number: $principal_phonenumber\r\nPrincipal Email: $principal_email"; 
    $from = "testing.com"; 
    $headers = "From:" . $from; 
    mail($to,$subject,$message,$headers); 

} 

등록 학교 일부 이전

if(empty($_POST) === false){ 
$register_data = array(
    'school_name'   => $_POST['school_name'], 
    'mailing_address'  => $_POST['mailing_address'], 
    'postcode'    => $_POST['postcode'], 
    'courier_address'  => $_POST['courier_address'], 
    'courier_postcode'  => $_POST['courier_postcode'], 
    'phonenumber'   => $_POST['phonenumber'], 
    'faxnumber'    => $_POST['faxnumber'], 
    'email'     => $_POST['email'], 
    'website'    => $_POST['website'], 
    'principal_fullname' => $_POST['principal_fullname'], 
    'principal_phonenumber' => $_POST['principal_phonenumber'], 
    'principal_email'  => $_POST['principal_email'], 
    'CScoor'    => $_POST['CScoor'], 
    'CS_email'    => $_POST['CS_email'], 
    'CS_phone'    => $_POST['CS_phone'], 
    'Engcoor'    => $_POST['Engcoor'], 
    'Eng_email'    => $_POST['Eng_email'], 
    'Eng_phone'    => $_POST['Eng_phone'], 
    'Mcoor'     => $_POST['Mcoor'], 
    'M_email'    => $_POST['M_email'], 
    'M_phone'    => $_POST['M_phone'], 
    'Sccoor'    => $_POST['Sccoor'], 
    'Sc_email'    => $_POST['Sc_email'], 
    'Sc_phone'    => $_POST['Sc_phone'] 

); 
register_school($register_data); 

mysql_close(); 

}

+1

1이 그렇게 미친 잘못 EMIAL ... 을 보내 : 그럼 당신은 그것을 이런 식으로 뭔가를 할 수 있습니다 $ register_data가 있으면 $ _POST를 전자 메일로 사용합니다. 실제로 입력을 살균하는 방법에 대해 읽어야합니다 ... – Svetoslav

+0

어디에서'register_school() '를 호출 했습니까? – Amir

+0

@Amir 내 질문을 업데이트했습니다.보세요. – rapide

답변

0

:

$to = "[email protected]"; 
    $subject = "New Registered School"; 
    $message = "School Name: $schoolname\r\nSchool Address: $mailing_address\r\nPostcode: $postcode\r\nCourier Address: $courier_address\r\nCourier Postcode: $courier_postcode\r\nPhone Number: $phonenumber\r\nFax Number: $faxnumber\r\nEmail: $email\r\nWebsite: $website\r\nPrincipal Name: $principal_fullname\r\nPrincipal Phone Number: $principal_phonenumber\r\nPrincipal Email: $principal_email"; 
    $from = "testing.com"; 
    $headers = "From:" . $from; 
    mail($to,$subject,$message,$headers); 

가 시작됩니다. 변수가 비어 있거나 없으면 모든 변수를 확인하십시오.

// 편집 : 죄송합니다. 값에 대한 배열이 없습니다. .. + 당신이 DB에 INSERT, 출력 JAVASCRIPT를 만들기 위해 1 개 기능을 사용해서는 안 모든

$success = true; 
foreach($register_data as $data) { 
    if (empty($_POST[$data])) { 
     $success = false; 
     break; 
    } 
} 

if ($success == true) { 
    //then mail 
} 
+0

이 코드는 정말 못 생겼다. . 함수에서 코드의 여러 부분을 나눕니다. 이것은 읽고 디버깅하는 것이 훨씬 낫습니다. – Zaziki

0
if(empty($_POST) === false) { 
      $required_fields = array('school_name', 'mailing_address', 'postcode', 'courier_address', 'courier_postcode', 'courier_postcode', 'phonenumber', 'faxnumber', 'email', 'website', 'principal_fullname', 'principal_phonenumber', 'principal_email'); 
      $flag = TRUE; 
      foreach($_POST as $key=>$value){ 
       if(empty($value) && in_array($key, $required_fields) === true){ 
        mysql_close(); 
        $flag = FALSE; 
        ?> 
        <script type="text/javascript"> 
        alert("Fields marked with an asterisk are required"); 
        history.back(); 
        </script> 
        <?php 
       } // end second if 
     } //end foreach 
     if ($flag == TRUE){ 
     $register_data = array(.....); //all $_POST value assign here 
     register_school($register_data);} 
} //end first if 
관련 문제