Programing

PHP 양식 제출에서 어떤 버튼이 클릭되었는지 어떻게 알 수 있습니까?

crosscheck 2020. 10. 24. 09:36
반응형

PHP 양식 제출에서 어떤 버튼이 클릭되었는지 어떻게 알 수 있습니까?


내 페이지에 여러 개의 버튼이 있지만 어떤 버튼이 클릭되었는지 어떻게 알 수 있는지 잘 모르겠습니다. 내 두 버튼에 대한 마크 업은 다음과 같습니다.

<input type="submit" id="btnSubmit" value="Save Changes" />
<input type="submit" id="btnDelete" value="Delete" />

다음과 같은 HTML 양식을 사용합니다.

<input type="submit" name="btnSubmit" value="Save Changes" />
<input type="submit" name="btnDelete" value="Delete" />

사용할 PHP 코드는 다음과 같습니다.

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    // Something posted

    if (isset($_POST['btnDelete'])) {
        // btnDelete
    } else {
        // Assume btnSubmit
    }
}

HTML 소스 코드 양식에 표시되는 첫 번째 제출 버튼을 항상 가정하거나 기본값으로 설정해야합니다 . 실제로 다양한 브라우저는 다음과 같은 경우 게시 데이터와 함께 제출 버튼의 이름 / 값을 안정적으로 보냅니다.

  1. 사용자는 말 그대로 마우스 또는 포인팅 장치로 제출 버튼을 클릭합니다.
  2. 또는 제출 버튼 (탭으로 이동)에 초점이 맞춰진 다음 Enter키를 누릅니다.

양식을 제출하는 다른 방법이 있으며 일부 브라우저 / 버전에서는 이러한 상황 중 일부에서 제출 단추의 이름 / 값을 보내지 않기로 결정 합니다. 예를 들어 많은 사용자Enter 가 커서 / 포커스가 텍스트 필드에있을 때 키 를 눌러 양식을 제출 합니다. 양식은 JavaScript 및 좀 더 모호한 방법을 통해 제출할 수도 있습니다.

이 세부 사항에주의를 기울이는 것이 중요합니다. 그렇지 않으면 사용자가 양식을 제출할 때 실제로 실망 할 수 있지만 "아무 일도 일어나지 않고"데이터가 손실됩니다. 코드가 양식 제출을 감지하지 못했기 때문입니다. 사실을 예상하지 못했기 때문입니다. 제출 버튼의 이름 / 값은 게시 데이터와 함께 전송되지 않을 수 있습니다.

또한 항상 기본 제출 버튼을 가정 해야하므로 단일 제출 버튼이있는 양식에도 위의 조언을 사용해야 합니다 .

나는 인터넷이 수많은 양식 처리기 튜토리얼로 가득 차 있다는 것을 알고 있으며, 거의 모든 것들이 제출 버튼의 이름과 값을 확인하는 것 외에는 아무것도하지 않습니다. 그러나 그들은 단지 명백한 잘못입니다!


HTML에서 :

<input type="submit" id="btnSubmit" name="btnSubmit" value="Save Changes" />
<input type="submit" id="btnDelete" name="btnDelete" value="Delete" />

PHP에서 :

if (isset($_POST["btnSubmit"])){
  // "Save Changes" clicked
} else if (isset($_POST["btnDelete"])){
  // "Delete" clicked
}

각 버튼에 이름 속성을 부여하는 데 필요한 모든 것입니다. 그리고 PHP 스크립트에서 각 버튼 누름을 처리해야합니다. 그러나 각 버튼에 고유 한 이름을 지정해야합니다. PHP 스크립트는 대부분의 경우 이름 만 처리하기 때문에

<input type="submit" name="Submit_this" id="This" />

PHP 또는 자바 스크립트로 요청하고 있습니까?

PHP에있는 경우 이름을 지정하고 post 또는 get 메소드를 사용합니다. 그 후에 isset 옵션을 사용하거나 해당 값으로 특정 버튼 이름을 확인할 수 있습니다.

js에 있으면 getElementById를 사용하십시오.

참고 URL : https://stackoverflow.com/questions/2680160/how-can-i-tell-which-button-was-clicked-in-a-php-form-submit

반응형