2016-07-27 2 views
-4

내 양식에 양식을 제출하기 전에 확인하고 싶은 필드가 있습니다. 오류가 있으면 양식이 제출되지 않고 사용자에게 오류가 표시됩니다.PHP에서 양식 제출을 확인하는 방법은 무엇입니까?

그 목적을 위해, 나는 폼이 제출 된 이벤트를 PHP에서 보려고합니다. 나는 "Submitted"라는 텍스트로 경고를 받아야한다. 그러나 나는 그렇지 않습니다. 내가 실수 한거야?

<?php 
if(isset($_POST['submit'])) 
    echo "<span>Submitted!</span>"; 
    sleep(2); 
?> 

<form action="next_page.php" method=post> 
*Other fields beside input* 
<input type="submit" name="submit" value="Submit form"> <br> 
</form> 
+0

HTML5'pattern' 속성 또는 JS를 사용할 수 있습니다. 오,'submit' 타입! – user5173426

+1

양식에 "submit"이라는 이름의 양식 요소가 있습니까? 아니? 그렇다면 어떻게해야합니까? 그럼 어떻게 코드에서 볼 수 있습니까? –

+0

또한 자바 스크립트와 PHP를 혼합하는 것처럼 보입니다 (자신 만의 alrt() 함수를 작성하지 않았다면이 질문의 단순성에 기반을 두었습니다). –

답변

3

alert()은 PHP에 의해 제공된 함수가 아니므 에러 것이다.

JavaScript로 혼동하는 것 같습니다.

PHP에서 텍스트를 출력하려면 echo이 필요하거나 <?php ... >? 블록 밖에 있어야합니다. JavaScript를 실행하려면 <script> 요소가 필요합니다.

<?php 
if(isset($_POST['submit'])) { 
?> 
    <script> alert("Submitted!"); </script> 
<?php 
} 
?> 

<form action="next_page.php" method=post> 
    <!-- You also need to have a form control that matches the test you are doing --> 
    <button name="submit" value="X">Submit</button> 
</form> 
1

양식에 submit 유형이 누락되었습니다. 또한 alert()은 PHP 기능이 아니기 때문에 echo 경고 상자가 필요합니다.

<?php if(isset($_POST['submit'])) 
    echo"<script>alert('Submitted!');</script>"; ?> 

<form action="next_page.php" method=post> 
<input type = "submit" name = "submit" value = "Sub"/> 
</form> 
+0

아니요. 편집 확인 – RiggsFolly

+0

@RiggsFolly 아, 이제 편집 된 것을 볼 수 있습니다! ':-)' – user5173426

0

달성하려는 목표를 달성하는 데는 여러 가지 방법이 있습니다. 어떤 종류의 프레임 워크를 사용하고 있습니까? 이것을 위해 내장되었을 수도 있습니다. 일반적으로 표준 함수 나 라이브러리를 사용하여 검증을하는 것은 나쁜 생각이 아닙니다.

당신이 그것을하지 않으면 서버 측 (PHP) 또는 사용자 측 (자바 스크립트)이 될 때마다 결정해야합니다. 서버 측에서 악의적 인 제출물을 잡으려면 관계없이 확인해야합니다.

예제를 살펴보면 서버 측 PHP 검증에서 사용자에게 결과가 표시되는 것처럼 보일 수 있습니다. 는 등 수정 될 수있는 $ _GET을 사용하고 진짜로 불안이 정말 조심하십시오

<?php 
$username = ''; 
$warning = ''; 

if(isset($_POST['submit'])){ 
    if(!empty($_POST['username']) && strlen(trim($_POST['username'])) != 0){ 
     $username = $_POST['username']; 
     if(strlen($username) > 8){ 
      $warning = 'Only 8 characters allowed!'; 
     }else{ 
      header("Location: next_page.php"); 
     } 
    } 
    else 
    { 
     $warning = 'Username is empty, please provide a valid name.'; 
    } 
} 
?> 
<form action="form.php" method="post"> 
    <input type="text" name="username" value="<?php echo($username); ?>" /> 
    <?php echo($warning); ?> 
    <input type="submit" name="submit" /> 
</form> 

이 조각은 경우 아무것도에 입력이 잘못 보존하고 데이터가 유효 할 경우에만 다음 페이지로 리디렉션합니다. jQuery를 사용하는 예는 다음과 같을 수 있습니다 :

<html lang="en"> 
<head> 
    <meta charset="utf-8"> 
    <title>event.preventDefault demo</title> 
    <script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script> 
</head> 
<body> 


    <form action="form.php" method="post"> 
     <input type="text" name="username" id="formUsername" /> 
     <span id="warning"> </span> 
     <input type="submit" name="submit" /> 
    </form> 

    <script> 
    $(document).ready(function() { 

     $("form").submit(function(event) { 
      var username = $("#formUsername").val().trim(); 

      if(username.length > 0 && username.length < 9){ 
       $("form").submit(); 
      } 
      else if(username.length > 8) 
      { 
       $("#warning").text("More than 8 characters."); 
       event.preventDefault(); 
      } 
      else{ 
       $("#warning").text("Empty username?"); 
       event.preventDefault(); 
      } 
     }); 

    }); 
    </script> 
</body> 
</html> 
+1

첫 번째 예에서는'$ _GET'과'$ _POST'를 섞어서 사용하고 있습니다. 또한 POST를 통해 양식이 제출되고 URL을 통해 사용자 이름이 설정되어 있지 않으면 두 번째 줄에 '정의되지 않은 변수'가 표시됩니다 . (여전히 첫 번째 예에서 만) – Epodax

+0

감사합니다. 조금 개선했습니다. 나는 처음에는 다른 생각으로 작업 했으므로'$ _GET'과 혼동합니다. 그것은 누군가에게 줄 수있는 것에 대한 아이디어를주기 위해 잘라내는 의미로만 쓰입니다. 그것은 많은 결함이 있습니다. – Seth

0

내가 양식, 경고를하지 제출 후 같은 페이지에 출력에 메시지를하려고 알고있는 것처럼. HTML 양식 태그의 action 속성은 next_page.php로 리디렉션합니다. 그러므로 action 속성을 비워 두십시오. 모든 필드의 유효성을 검사 한 후 php header() 함수를 사용하여 next_page.php로 리디렉션하십시오. header() 함수 전에 메시지를 출력하지 않도록주의하십시오.이 경우 실패합니다. 는 다음과 같이 smthing 마십시오 많은 방법있다

<?php 
if($_SERVER['REQUEST_METHOD'] == 'POST'){ 
    $err_message = ''; 
    //validate your fields 
    if($_POST['yourfield'] == ''){ 
     $err_message = 'Please check your fields'; 
    } 
    //other validations 
    ... 
    if($err_message == ''){ 
     //redirect to your next page 
     header('Location:next_page.php'); 
     //prevent further code execution 
     exit(); 
    } 
    //output your message 
    echo $err_message; 
} 
?> 

<form action="" method=post> 
*Other fields beside input* 
<input type="submit" name="submit" value="Submit form"> <br> 
</form> 
0

당신이 그것을 할 수 있습니다.

여기에 다시 당신이 에코 아래에 기반 유지하기를 원한다면 대안입니다 :

<?php 
if (isset($_POST['submit'])) 
{ 
    echo '<script>alert("Submitted!");</script>'; 
} 
?> 

<form action="" method=post> 
    *Other fields beside input* 
    <input type="submit" name="submit" value="Submit form"> <br> 
</form> 

편집 : 일반적으로 나는 오히려으로 다른 곳에서 지적하는 것보다 같은 페이지의 상단에 PHP를 떠나 시도 그것을 할 필요가별로 없습니다.

0

내가 해결 한 방법은 아래와 같이 Jquery를 사용하는 것입니다.

$('#form1').submit(
    function() { 
     //your validation rules here 
     var email = $('#YourEMail').val() 
     if(!validEmail(email)) 
     { 
      $('#invalidAlert').html('<i>Invalid e-mail address!</i>') 
      return false; 
     } 
     else 
      return true; 
    }); 
관련 문제