2012-10-15 5 views
-2

저는 PHP newb입니다. 그래서이 단순한 질문에 대해 저와 함께하시기 바랍니다.PHP 폼은 여전히 ​​오류 후 보내고 있습니다

는 내가 PHP 양식 설정

<?php 
    if($_POST){ 
     $name = $_POST['name']; 
     $email = $_POST['email']; 
     $message = $_POST['message']; 
     $comments = $_POST['comments']; 

     if($comments) 
      $error = "There was an error, please give us a call at ### ###-####."; 
     else{ 
      if($name=="Name" || $email=="Email" || $message=="Message"){ 
       $error = "All fields are required, please fill them out and try again."; 
      }else 
      $header = "From: $name <$email>"; 
       $message = "Name: $name\n\nEmail: $email\n\nMessage: $message"; 
       if(mail("[email protected]", 'Form Submission', $message, $header)) 
        $success = "Thanks for sending us your message, we'll get back to you shortly."; 
       else 
        $error = "There was an error, please give us a call at ### ###-####."; 
     } 
     if($error) 
      echo '<div class="msg error">'.$error.'</div>'; 
     elseif($success) 
      echo '<div class="msg success">'.$success.'</div>'; 
    } 
?> 

기본적인 아이디어는 양식이 각 필드에 설명 텍스트 미리 작성했다고하지만, 당신이 그들을 클릭 할 때 자바 스크립트를 통해 삭제됩니다 >>과 같이 있습니다. 나는 사람들이 그것을 채우지 않고 양식을 보내지 못하게하고 싶다. 그러므로 "if ($ name =="Name "|| $ email =="Email "|| $ message =="Message ") {"bit . 그러나 그 메시지가 작동하는 동안 양식은 여전히 ​​제출 중입니다. 왜 이런거야. 또한 "주석"필드가 실제로 허니팟임을 유의하십시오. 감사!

+0

왜 아래 표를 얻습니까? OP는 그가 신입이었다고 인정했다. 그가 해결하려고하는 문제는 매우 일반적 (간단한 폼 유효성 검사)이며, Javascript를 생각할 때 PHP를 생각하고있었습니다. stackoverflow 당, 게시물이 "심각하게 엉성한, 노력하지 않은 게시물"일 때 투표를해야합니다. 그래서 게으른 질문을위한 downvote, newb되지 않습니다. – Landon

답변

5

PHP가 서버 측이기 때문에. 당신이 원하는 것에 대한 자바 스크립트 유효성 검사를 조사해야합니다. PHP로 유효성을 검사하려면 양식을 제출해야합니다.

tutorial하지만 난

+0

알았습니다. 귀하의 회신에 감사드립니다. – Pieter

+0

보다 안전하기 때문에 PHP 유효성 검사가 좋습니다. 당신은 존재뿐만 아니라 공허함과 mysql injections 또는 html/javascript에 대해서도 문자열을 검사해야하고 utf 8을 사용하도록한다. 그래서 문제가 없을 것이다. " '~ ~ botenvouwer

+0

@sirwilliam 또한 javascript를 비활성화하여 모든 js 유효성 검사를 건너 뛸 수 있습니다. 이것은 PHP에서 항상 확인해야하는 이유입니다. – Iznogood

0

이 경우 ($ 이름 == "이름"|| $ 이메일 "나는 그것을 작성하지 않고 양식에 보내 눌러 사람을 방지하기 위해 따라서 원하는"jQuery를 validation 추천 == "이메일"|| $ message == "Message") { "

올바른 확인이 끝날 때까지 제출 버튼 클라이언트 측을 사용 중지하고 서버 측의 유효성을 검사하기 만하면됩니다. @Iznogood가 말했듯이 왜 당신이 실수한지

0

lznogood와 마찬가지로 PHP는 서버의 양식을 검증하므로 정보를 보내야합니다. PHP가 처리 할 수 ​​있기 전에 서버에 전달해야합니다.

양식을 서버로 보내기 전에 사용자 측에서 확인하려면 JavaScript를 사용해야합니다 (jQuery는 사용하기에 좋은 도구 임). 사용자 측에서 확인한 후 양식을 서버로 송신할지 여부.

0

귀하의 질문에 대한 답변이 아니지만 새로운 html5 기능 placeholder에 관심이있을 수 있습니다. 그것에 대해 읽으십시오 here. here (어리석은 인터넷 탐색기!)에서 어떤 브라우저가 작동하는지 확인할 수 있습니다. 5 년 전, 저는 그 "힌트"를 가치로 두었습니다. 이것은 가치있는 통증이었습니다. placeholder은 훨씬 쉽게 sooooooo합니다. 그 값이 비어

<input type="text" name="email" placeholder="Enter Your Email Here" value="">

참고 : 같은 태그가 보일 것이다. value 애트리뷰트를 생략 할 수있다. 필자는 여기에 값 애트리뷰트가 필요 없다는 것을 나타 내기 위해 그것을 버렸다.

귀하의 원래 질문에 대한 대답까지, 다른 사람들은 모두 정확합니다, 자바 스크립트는 갈 길입니다.

관련 문제