[php] 양식이 제출되었는지 확인-PHP

양식의 변수를 유효성 검사 클래스에 전달해야하는지 여부를 결정하기 위해 양식이 제출되었는지 여부를 확인하는 가장 좋은 방법은 무엇입니까?

처음에는 다음과 같이 생각했습니다.

isset($_POST)

그러나 수퍼 글로벌이 모든 곳에서 정의되므로 항상 true를 반환합니다. 다음을 사용하여 양식의 각 요소를 반복 할 필요가 없습니다.

if(isset($_POST['element1']) || isset($_POST['element2']) || isset(...etc

이 질문을 작성하는 동안 훨씬 더 기본적인 해결책을 생각했습니다. 숨겨진 필드를 추가하여 확인할 수있는 플래그 역할을합니다.

내 자신의 깃발을 추가하는 것보다 ‘더 깨끗한’방법이 있습니까?



답변

POST조치 가 있는지 일반적인 확인을 위해 다음을 사용하십시오.

if (!empty($_POST))

편집 : 주석에서 언급 했듯이이 방법은 경우에 따라 작동하지 않습니다 (예 : 이름이없는 확인란 및 버튼 사용). 정말 다음을 사용해야합니다.

if ($_SERVER['REQUEST_METHOD'] == 'POST')


답변

어때

if($_SERVER['REQUEST_METHOD'] == 'POST')


답변

실제로 제출 버튼은 이미이 기능을 수행합니다.

양식에서 시도 :

<form method="post">
<input type="submit" name="treasure" value="go!">
</form>

그런 다음 PHP 핸들러에서 :

if (isset($_POST['treasure'])){
echo "treasure will be set if the form has been submitted (to TRUE, I believe)";
}


답변

사용하다

if(isset($_POST['submit'])) // name of your submit button


답변

if ($_SERVER['REQUEST_METHOD'] == 'POST').


답변

이 시도

 <form action="" method="POST" id="formaddtask">
      Add Task: <input type="text"name="newtaskname" />
      <input type="submit" value="Submit"/>
 </form>

    //Check if the form is submitted
    if($_SERVER['REQUEST_METHOD'] == 'POST' && !empty($_POST['newtaskname'])){

    }


답변

다른 참고로, 양식에 토큰을 추가하고 데이터가 외부에서 전송되지 않았는지 확인하기 위해 토큰을 확인하는 것도 항상 좋은 방법입니다. 단계는 다음과 같습니다.

  1. 고유 토큰 생성 (해시 사용 가능) 예 :

    $token = hash (string $algo , string $data [, bool $raw_output = FALSE ] );
  2. 이 토큰을 세션 변수에 할당하십시오. 전의:

    $_SESSION['form_token'] = $token;
  3. 숨겨진 입력을 추가하여 토큰을 제출하십시오. 전의:

    input type="hidden" name="token" value="{$token}"
  4. 그런 다음 유효성 검사의 일부로 제출 된 토큰이 세션 변수와 일치하는지 확인합니다.

    Ex: if ( $_POST['token'] === $_SESSION['form_token'] ) ....