2012-09-22 2 views
0

나는 PHP에 매우 익숙하다. 그래서 필자는 필자의 연락 양식에 필수 필드를 추가하는 데 도움이 필요하다. 뷰어에게 필수 입력란에 무엇인가를 입력하라는 좋은 "오류"메시지를 표시하고 싶습니다. 여기 연락처 양식에 필수 양식 필드를 추가해야하지만 어떻게해야합니까?

내 PHP 스크립트입니다 :

<?php 
     if(isset($_POST['submit'])){ 

      $to = "[email protected]"; 
      $headers = "From: " . $_POST['email']; 
      $subject = "Ben, you have been contacted..."; 
      $body = "Name: " . $_POST['name'] . "\nEmail: " . $_POST['email'] . "\nWebsite: " . $_POST['web'] . "\n" . "\nFavorite Piece of work: " . $_POST['favwork'] . "\n" . "\nMessage: " . $_POST['message']; 

      if(mail($to, $subject, $body, $headers)){ 

      echo("<p class=contactformsent>".$_POST['name'].", your information was received. For your records an email has also been sent to you!</p>"); 

      } 
      else{ 
       echo("<p class=contactformnotsent>".$_POST['name'].", Message delivery failed...</p>"); 
      } 
     } 

       if(isset($_POST['submit'])){ 

      $to = $_POST['email']; 
      $headers = "From: [email protected]" ; 
      $subject = "You contacted benlevywebdesign"; 
      $body = $_POST['name'].", Thank you for taking a look at my portfolio and contacting me. I have received your contact information/message and I will get back to you as soon as I can!" . "\n" . "\nFor your records I have:" . "\nEmail: " . $_POST['email'] . "\nWebsite: " . $_POST['web'] . "\n" . "\nFavorite Piece of work: " . $_POST['favwork'] . "\n" . "\nMessage: " . $_POST['message']; 

      if(mail($to, $subject, $body, $headers)){ 
      } 
     } 

?> 

여기에 HTML 코드 : 다음

<?php include("contactform.php"); ?> 

<form id="form1" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST"> 
<fieldset> 
      <p class="form">Name* 
       <input type="text" name="name" id="name" size="30"/> 
      </p> 
      <p class="form">Email* 
       <input type="text" name="email" id="email" size="30" /> 
      </p>...(the rest of the form html code here) 

마지막 라인 :

<p class="submit"><button name="submit" type="submit">Send</button></p> 

    </form> 
+0

: 당신이 의견을 제출하면 페이지가 양식으로 돌아가려면

또한, 양식 URL은과 같이 양식에 대상 태그가 있는지 확인? –

+0

그게 좋은 지적이야! 시청자가 제출을 클릭하면 데이터를 보내기 전에! – benlevywebdesign

+0

클라이언트 측에서이 작업을 수행 하시겠습니까? –

답변

0

에 대한 인터넷 검색하여 발견 : 여기

양식 유효성 검사를 수행하는 JS 라이브러리에 대한 예입니다 브라우저에 표시하거나 데이터베이스에 저장하려고하면 나쁜 일이 발생하는 것을 방지합니다.

if(mail($to, $subject, $body, $headers)){ 

당신은과 같이 폼에 약간의 유효성 검사를 추가해야합니다 :

:

$errors = array(); 
$name = $_POST['name']; 
$email = $_POST['email']; 

if (empty($name)) { 
    $errors['name'] = 'Please enter your name!'; 
} 

if (empty($email)) { 
    $errors['email'] = 'Please enter your e-mail!'; 
} 

은 다음과 같이 귀하의 이메일 라인을 변경하려면 다음 행하기 전에

if(!count($errors) && mail($to, $subject, $body, $headers)){ 

다음 대신에 :

echo("<p class=contactformnotsent>".$_POST['name'].", Message delivery failed...</p>"); 

당신은 메일이 실패 그렇다면 같은 여분의 오류를 추가 할 수 있습니다

$errors['sendmail'] = 'Unable to send the e-mail!'; 

또한, 당신은 그냥 상단에 각 입력에서 그들을 통해 양식 자체 및 루프에 어떤 오류를 보일 것이다 :

foreach ($errors as $error) { 
    print $error."<br />\n"; 
} 

물론 시작일뿐입니다. 확실히 몇 가지 추가 점검을해야합니다. 예를 들어 이름의 최소 길이를 확인하고 그 이상한 문자를 제거하는 등의 작업을 할 수 있습니다. 당신이 POST도 발생하기 전에 유효성 검사를 수행 할 같이

UPDATE는

벤, 귀하의 의견에 따라, 그것은 보인다.이 경우, 몇 가지 기본 jQuery 유효성 검사를 수행하는 것이 좋습니다.

여기에 Basic jQuery Validation 페이지가 있습니다.

더 많은 정보를 얻으세요? 제출 후 입력하거나 동안 때

<a name="comments_form" /> 
<form id="form1" action="<?php echo $_SERVER['PHP_SELF']; ?>#comments_form" method="POST"> 
+0

오류를 검사하기 위해 마지막 부분을 어떻게 변경합니까? 나는 다른 모든 것을 이해했다고 생각합니다. 그것을 지금 시도, 고마워! – benlevywebdesign

+0

사용자가 혼란 스럽다고 생각합니다. 서버에 데이터를 보내기 전에 클라이언트 측에 확인을 요청하고 유효성 검사에서 질문 아래의 주석을 확인하십시오. –

+0

예, 정확히 원하는 것입니다! – benlevywebdesign

0

을 수행 할 수 있습니다 서버 측에서 다음을 확인하십시오 :

if(isset($_POST['name'])) { } // only send the mail if this is true. 

많은 클라이언트 측 솔루션도 있습니다. Javascript를 사용하여 직접 작성할 수도 있습니다. "클라이언트 측 보안이 작동하지 않기 때문에"서버 쪽에서 검사를 계속 포함해야합니다. 사용자는 Javascript를 비활성화하고 검사를 실행하지 않고 양식을 제출할 수 있습니다.

http://rickharrison.github.com/validate.js/

내가 브라우저에서 모든 입력을 탈출해야한다, 일반적으로 javascript form validation

+0

나는 사용자가 혼란 스럽다고 생각한다. 서버에 데이터를 보내주기 전에 클라이언트 측에 검증을해야하고, 검증은 질문 아래의 주석을보아야한다. –

+1

내 의견에 진술했듯이 클라이언트 측 유효성 검사만으로는 유효성을 보장 할 수 없다. 사용자는 강제로 클라이언트 측 스크립트를 실행할 수 없습니다. –

+0

나는 클라이언트 쪽이 단지 사용자 친화적이라는 것을 알고있다. 서버 쪽이 더 중요하다. –

관련 문제