2016-06-28 1 views
-1

구체화 및 일부 PHP의 CSS를 사용하여 '문의하기'양식을 작성 중입니다. 지금까지 제가 가지고있는 코드는 다음과 같습니다. 내가 MAMP에서이 프로그램을 실행할 때간단한 PHP '문의하기'양식

HTML

<div class="row"> 
     <form action="?" method="post"> 
      <div class="row"> 
      <div class="input-field col s6"> 
       <input name="realfirstname" id="realfirstname" type="text"> 
       <label class="active">First Name</label> 
      </div> 
      <div class="input-field col s6"> 
       <input name="realsecondname" id="realsecondname" type="text" class="validate"> 
       <label class="active" for="last_name">Last Name</label> 
      </div> 
      </div> 
      <div class="row"> 
      <div class="input-field col s12"> 
       <input name="email" id="email" type="text" class="validate"> 
       <label class="active" for="last_name">Email</label> 
      </div> 
      </div> 
      <div class="row"> 
      <div class="input-field col s12"> 
       <input name="comments" id="comments" type="text" class="materialize-textarea"> 
       <label class="active" for="textarea1">Comments</label> 
      </div> 
      </div> 
      <div class="row"> 
      <button class="btn waves-effect waves-light" type="submit" name="send">Submit 
      </button> 
      </div> 
     </form> 
     </div> 

    </div> 

내 PHP

<html> 
    <head> 
    <title>Thanks For Contacting Us</title> 
    </head> 
    <body> 
    <?php 
     $recipient = '[email protected]'; 
     $email = $_POST['email']; 
     $realFirstName = $_POST['realfirstname']; 
     $realSecondName = $_POST['realsecondname']; 
     $subject = $_POST['comments']; 
     # We'll make a list of error messages in an array 
     $messages = array(); 
    if (!preg_match("/^[\w\+\-.~]+\@[\-\w\.\!]+$/", $email)) { 
    $messages[] = "That is not a valid email address."; 
    } 
    if (!preg_match("/^[\w\ \+\-\'\"]+$/", $realName)) { 
    $messages[] = "The real name field must contain only " . 
    "alphabetical characters, numbers, spaces, and " . 
    "reasonable punctuation. We apologize for any inconvenience."; 
    } 
    $subject = preg_replace('/\s+/', ' ', $subject); 
    # Make sure the subject isn't blank afterwards! 
    if (preg_match('/^\s*$/', $subject)) { 
    $messages[] = "Please specify a subject for your message."; 
    } 

    $body = $_POST['body']; 
    # Make sure the message has a body 
    if (preg_match('/^\s*$/', $body)) { 
    $messages[] = "Your message was blank. Did you mean to say " . 
    "something?"; 
    } 
     if (count($messages)) { 
     foreach ($messages as $message) { 
      echo("<p>$message</p>\n"); 
     } 
     echo("<p>Click the back button and correct the problems. " . 
      "Then click Send Your Message again.</p>"); 
     } else { 
    mail($recipient, 
      $subject, 
      $body, 
      "From: $realName <$email>\r\n" . 
      "Reply-To: $realName <$email>\r\n"); 
     echo("<p>Your message has been sent. Thank you!</p>\n"); 
     } 
    ?> 
    </body> 
    </html> 

내 오류 모든 메시지를 다시받을! 내가 뭘 잘못하고 있는지 모르겠어. 내 머리카락을 꺼내고있어!

+1

이'$ _POST [ 'body']'를보고 귀하의 양식에없는 것을보십시오. 그래서, 스스로 호의를 베풀고 디버깅하는 방법을 배우십시오. –

+0

페이지를로드 할 때'$ _POST'가 채워지지 않으므로? –

답변

0

글쎄, 우선 $ realFirstName과 $ realSecondName을 지정하고 있지만 $ realName이라는 정규 표현식을 사용하고 있습니다.이 정규 표현식은 코드의 다른 곳에서는 볼 수 없습니다.

$ _POST [ 'body']는 (는) 양식의 어느 곳에도 없으므로 $ body를 검사 할 때 같은 문제가 있습니다.

스크립트가 동일한 이유로 많은 정의되지 않은 변수 오류를 발생시킵니다.