폼이 전송되었는지 확인하는 중 - 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'])){
}
한편, 토큰을 양식에 추가하고 데이터가 외부에서 전송되지 않았는지 확인하는 것도 항상 좋은 방법입니다.스텝은 다음과 같습니다.
고유 토큰 생성(해시 사용 가능) 예:
$token = hash (string $algo , string $data [, bool $raw_output = FALSE ] );
이 토큰을 세션 변수에 할당합니다.예:
$_SESSION['form_token'] = $token;
숨겨진 입력을 추가하여 토큰을 제출합니다.예:
input type="hidden" name="token" value="{$token}"
그런 다음 검증의 일부로 전송된 토큰이 세션 변수와 일치하는지 확인합니다.
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
'itsource' 카테고리의 다른 글
MySQL: MySQL에서 플러시 권한이 필요한 경우 (0) | 2023.01.28 |
---|---|
주어진 대로 mysql에서 데이터를 주문하는 방법 (0) | 2023.01.28 |
ERROR 1047 (08S01): 데이터베이스를 작성하거나 데이터베이스를 사용할 때 WSREP에서 애플리케이션용 노드를 아직 준비하지 않았습니다. (0) | 2023.01.28 |
React에서 문서 제목을 설정하려면 어떻게 해야 합니까? (0) | 2023.01.28 |
Linux에서 php에서 --enable-soap을 활성화하려면 어떻게 해야 하나요? (0) | 2023.01.28 |