itsource

폼이 전송되었는지 확인하는 중 - PHP

mycopycode 2023. 1. 28. 09:36
반응형

폼이 전송되었는지 확인하는 중 - PHP

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

처음엔 그럴지도 모른다고

isset($_POST)

하지만 슈퍼글로벌은 어디에나 정의되어 있기 때문에 그것은 항상 사실로 돌아올 것이다.폼의 각 요소를 다음과 같이 반복하고 싶지 않습니다.

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

이 질문을 쓰면서 저는 훨씬 더 기본적인 해결책을 생각해 냈습니다. 제가 확인할 수 있는 플래그 역할을 할 수 있는 숨겨진 필드를 추가하세요.

깃발을 꽂는 것보다 더 깨끗한 방법이 있을까요?

일반적인 확인을 위해서POST액션 사용:

if ($_POST)

편집: 코멘트에 기재되어 있듯이, 이 방법은 경우에 따라서는 기능하지 않는 경우가 있습니다(예를 들면, 이름이 없는 체크 박스나 버튼).다음 항목을 사용해야 합니다.

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

어때.

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

실제로 이 기능은 이미 [전송(Submit)]버튼이 실행하고 있습니다.

다음 폼에서 시도해 보십시오.

<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'] ) ....
    

저도 같은 문제가 있었습니다.또, 추가해 주세요.name=""를 누릅니다.음, 그 수정은 나한테 효과가 있었어.

if($_SERVER['REQUEST_METHOD'] == 'POST' && !empty($_POST['add'])){
    echo "stuff is happening now";
}

<input type="submit" name="add" value="Submit">

다음 항목도 사용할 수 있습니다.

is_array($_POST)

언급URL : https://stackoverflow.com/questions/7711466/checking-if-form-has-been-submitted-php

반응형