예제와 함께 GET, POST 메소드를 사용한 PHP 등록 양식

⚡ 스마트 요약

PHP의 폼 처리는 HTML 폼에서 사용자 입력을 받아 $_POST 및 $_GET 슈퍼글로벌 변수를 통해 서버에서 처리합니다. 이 예제에서는 회원가입 폼을 만들고, POST 및 GET 메서드를 설명하고 비교하며, 필드, 체크박스, 검색 입력을 처리하는 방법을 보여줍니다.

  • 📝 양식의 기능: HTML 폼은 텍스트 상자, 체크박스, 버튼과 같은 필드를 통해 사용자 입력을 수집한 후 서버 스크립트로 전송합니다.
  • 📬 게시 방법: $_POST는 HTTP 본문에 값을 전송합니다.ping 그들을 ~에서 내쫓아 URL이는 로그인 및 민감한 데이터에 적합합니다.
  • 🔗 GET 방법: $_GET은 값을 추가합니다. URL따라서 검색 결과를 북마크할 수 있어 검색 양식에 이상적입니다.
  • ⚖️ POST vs GET: POST 요청에는 실질적인 길이 제한이 없으며 다양한 데이터 유형을 지원합니다. GET 요청은 더 짧고 문자열만 지원하며 응답 내용이 공개됩니다.
  • 처리 입력: `isset()` 함수는 스크립트가 필드 값을 읽고 사용하기 전에 해당 필드가 제출되었는지 여부를 확인합니다.
  • ☑️ 확인란: 체크박스는 선택되었을 때만 값을 전송하므로, isset() 함수는 사용자가 해당 옵션에 동의했는지 또는 선택했는지를 확인합니다.
  • 🤖 AI 지원: AI 도구는 유효성 검사를 거친 안전한 양식을 생성하고 양식이 제대로 제출되지 않는 이유를 진단하는 데 도움을 줄 수 있습니다.

PHP 폼 처리

양식이란 무엇입니까?

웹사이트나 메일함에 로그인할 때, 여러분은 양식과 상호작용하는 것입니다.

양식은 사용자로부터 입력을 받고 처리를 위해 웹 서버에 제출하는 데 사용됩니다.

아래 다이어그램은 양식 처리 프로세스를 보여줍니다.

PHP 폼

폼은 입력 상자, 체크박스, 라디오 버튼 등과 같은 그래픽 사용자 인터페이스 요소를 포함하는 HTML 태그입니다.

폼은 다음을 사용하여 정의됩니다. … 태그와 GUI 항목은 입력과 같은 폼 요소를 사용하여 정의됩니다.

언제, 왜 양식을 사용합니까?

  • 양식은 개발할 때 유용합니다.ping 사용자 입력을 받아들이는 유연하고 동적인 애플리케이션.
  • 양식을 사용하면 데이터베이스에 이미 존재하는 데이터를 편집할 수 있습니다.

양식 만들기

HTML 태그를 사용하여 양식을 만듭니다. 다음은 양식을 만드는 데 필요한 최소한의 목록입니다.

  • 열기 및 닫기 양식 태그 …
  • 양식 제출 유형 POST 또는 GET
  • 복종 URL 제출된 데이터를 처리할 것입니다.
  • 입력 상자, 텍스트 영역, 버튼, 체크박스 등과 같은 입력 필드.

아래 코드는 간단한 회원가입 양식을 생성합니다.

<html>
<head>
<title>Registration Form</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>

<h2>Registration Form</h2>

<form action="registration_form.php" method="POST"> First name:

<input type="text" name="firstname"> <br> Last name:

<input type="text" name="lastname">

<input type="hidden" name="form_submitted" value="1" />

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

</form>
</body>
</html>

위 코드를 웹 브라우저에서 보면 다음과 같은 형식이 표시됩니다.

양식 만들기

이리,

  • … 열기 및 닫기 양식 태그입니다.
  • action="registration_form.php" method="POST"는 목적지를 지정합니다. URL 그리고 제출 유형입니다.
  • 이름/성: 입력 상자의 레이블입니다.
  • 입력 상자 태그입니다
  • 새 줄 태그입니다
  • 양식이 제출되었는지 여부를 확인하는 데 사용되는 숨겨진 값입니다.
  • 이 버튼은 클릭하면 양식이 서버로 전송되어 처리되는 버튼입니다.

양식 데이터를 서버에 제출

폼의 action 속성은 제출 여부를 지정합니다. URL 데이터를 처리하는 메서드입니다. method 속성은 제출 유형을 지정합니다.

PHP POST 방법

  • 이는 HTTP POST 메서드를 통해 제출된 값을 가져오는 데 사용되는 PHP 내장 슈퍼글로벌 배열 변수입니다.
  • 배열 변수는 프로그램의 모든 스크립트에서 액세스할 수 있습니다. 그것은 글로벌 범위를 가지고 있습니다.
  • 이 방법은 폼 제출 값을 표시하고 싶지 않을 때 이상적입니다. URL.
  • POST 메서드를 사용하는 좋은 예는 서버에 로그인 정보를 제출할 때입니다.

구문은 다음과 같습니다.

<?php
$_POST['variable_name'];
?>

이리,

  • "$_POST[...]"는 PHP 배열
  • "'variable_name'"은 폼 필드 이름입니다.

PHP GET 방식

  • 이는 HTTP GET 메서드를 통해 제출된 값을 가져오는 데 사용되는 PHP 내장 슈퍼글로벌 배열 변수입니다.
  • 배열 변수는 프로그램의 모든 스크립트에서 액세스할 수 있습니다. 그것은 글로벌 범위를 가지고 있습니다.
  • 이 메서드는 폼 값을 표시합니다. URL.
  • 검색 엔진 양식에 이상적이며, 사용자가 검색 결과를 북마크할 수 있도록 해줍니다.

구문은 다음과 같습니다.

<?php
$_GET['variable_name'];
?>

이리,

  • "$_GET[...]"은 PHP 배열입니다.
  • "'variable_name'"은 URL 변수 이름.

GET 대 POST 방법

POST 바로
표시되지 않는 값 URL 표시되는 값 URL
HTTP 요청 본문을 통해 전송되므로 값의 길이에 제한이 없습니다. 값의 길이에 제한이 있으며, 일반적으로 255자입니다. 이는 값이 표시되는 방식 때문입니다. URL참고로, 문자 수의 상한은 브라우저에 따라 다릅니다.
HTTP 본문에 POST 값을 캡슐화하는 데 시간이 소요되므로 GET 방식보다 성능이 떨어집니다. POST 방식보다 성능이 더 높은데, 이는 값을 단순히 추가하는 간단한 방식 때문입니다. URL.
문자열, 숫자, 이진 데이터 등 다양한 데이터 형식을 지원합니다. 값이 문자열로 표시되므로 문자열 데이터 형식만 지원합니다. URL
검색 결과를 북마크할 수 없습니다. 결과가 명확하게 표시되므로 북마크에 저장할 수 있습니다. URL

아래 그림은 GET과 POST의 차이점을 보여줍니다.

GET 대 POST 방법

GET 대 POST 방법

등록 양식 데이터 처리

등록 양식은 양식의 작업 속성에 지정된 대로 데이터를 자체적으로 제출합니다.

폼이 제출되면 해당 값들이 $_POST 슈퍼글로벌 배열에 채워집니다.

$_POST 배열에 폼 값이 채워졌는지 확인하고 데이터를 처리하기 위해 PHP isset 함수를 사용하겠습니다.

회원가입 양식에 데이터를 처리하는 PHP 코드를 추가하도록 수정하겠습니다. 수정된 코드는 아래와 같습니다.

<html>
<head>
<title>Registration Form</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

</head>
<body>

<?php if (isset($_POST['form_submitted'])): ?> // this code is executed when the form is submitted

<h2>Thank You <?php echo $_POST['firstname']; ?> </h2>

<p>You have been registered as
<?php echo $_POST['firstname'] . ' ' . $_POST['lastname']; ?>
</p>

<p>Go <a href="/registration_form.php">back</a> to the form</p>

<?php else: ?>

<h2>Registration Form</h2>

<form action="registration_form.php" method="POST">

First name:
<input type="text" name="firstname">

<br> Last name:
<input type="text" name="lastname">

<input type="hidden" name="form_submitted" value="1" />

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

</form>

<?php endif; ?>
</body>
</html>

이리,

  • `form_submitted`라는 숨겨진 필드가 `$_POST[]` 배열에 있는지 확인하고, 있다면 감사 메시지와 함께 이름을 표시합니다. `form_submitted` 필드가 `$_POST[]` 배열에 없다면, 폼이 표시됩니다.

더 많은 예제

간단한 검색 엔진

PHP GET 메서드를 폼 제출 유형으로 사용하는 간단한 검색 엔진을 설계하겠습니다.

단순화를 위해 다음을 사용하겠습니다. PHP if 문 출력을 결정합니다.

위의 등록 양식에 동일한 HTML 코드를 사용하고 최소한의 수정만 적용하겠습니다.

<html>
<head>
<title>Simple Search Engine</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>

<?php if (isset($_GET['form_submitted'])): ?>

<h2>Search Results For <?php echo $_GET['search_term']; ?> </h2>
<?php if ($_GET['search_term'] == "GET"): ?>

<p>The GET method displays its values in the URL</p>

<?php else: ?>
<p>Sorry, no matches found for your search term</p>

<?php endif; ?>

<p>Go <a href="/search_engine.php">back</a> to the form</p>

<?php else: ?>

<h2>Simple Search Engine - Type in GET </h2>

<form action="search_engine.php" method="GET">

Search Term:
<input type="text" name="search_term">
<br>

<input type="hidden" name="form_submitted" value="1" />

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

</form>
<?php endif; ?>
</body>
</html>

위 페이지를 웹 브라우저에서 열어보세요.

다음 양식이 표시됩니다.

단순 검색 엔진

GET을 대문자로 입력한 다음 제출 버튼을 클릭하세요.

다음 내용이 표시됩니다.

단순 검색 엔진

아래 그림은 다음을 보여줍니다. URL 위의 결과에 대해서.

단순 검색 엔진

참고 사항 URL search_term과 form_submitted의 값을 표시했습니다. GET이 아닌 다른 단어를 입력한 다음 제출 버튼을 클릭하고 어떤 결과가 나오는지 확인해 보세요.

체크박스, 라디오 버튼 작업

사용자가 체크박스나 라디오 버튼을 선택하지 않으면 아무 값도 제출되지 않습니다. 사용자가 체크박스나 라디오 버튼을 선택하면 1(참) 값이 제출됩니다.

등록 양식 코드를 수정하고 사용자가 서비스 약관에 동의할 수 있는 확인 버튼을 포함할 예정입니다.

<html>
<head>
<title>Registration Form</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<?php if (isset($_POST['form_submitted'])): ?>
<?php if (!isset($_POST['agree'])): ?>
<p>You have not accepted our terms of service</p>
<?php else: ?>
<h2>Thank You <?php echo $_POST['firstname']; ?></h2>
<p>You have been registered as
<?php echo $_POST['firstname'] . ' ' . $_POST['lastname']; ?>
</p>
<p> Go <a href="/registration_form2.php">back</a> to the form</p>
<?php endif; ?>
<?php else: ?>
<h2>Registration Form</h2>
<form action="registration_form2.php" method="POST">
First name:
<input type="text" name="firstname">
<br> Last name:
<input type="text" name="lastname">
<br> Agree to Terms of Service:
<input type="checkbox" name="agree">
<br>
<input type="hidden" name="form_submitted" value="1" />
<input type="submit" value="Submit">
</form>
<?php endif; ?>
</body>
</html>

위 양식을 브라우저에서 열어보세요.

체크박스, 라디오 버튼 작업

이름과 성을 입력하세요.

서비스 약관 동의 체크박스가 선택되지 않았습니다.

제출 버튼을 클릭하십시오.

다음과 같은 결과가 나타납니다.

체크박스, 라디오 버튼 작업

'양식으로 돌아가기' 링크를 클릭한 다음 확인란을 선택하세요.

체크박스, 라디오 버튼 작업

제출 버튼을 클릭하십시오.

다음과 같은 결과가 나타납니다.

체크박스, 라디오 버튼 작업

자주 묻는 질문

$_GET은 다음에서 값을 읽습니다. URL 쿼리 문자열, $_POST는 요청 본문에서 값을 읽어오고, $_REQUEST는 GET, POST 및 쿠키 데이터를 병합합니다. 값이 어디에서 왔는지 정확히 알 수 있도록 특정 배열을 사용하는 것이 좋습니다.

절대 원시 입력값을 신뢰하지 마십시오. filter_var() 함수 또는 각 필드에 대한 규칙을 사용하여 유효성을 검사하고, XSS 공격을 방지하기 위해 htmlspecialchars() 함수를 사용하여 출력을 이스케이프 처리하십시오. SQL 인젝션을 방지하기 위해 데이터베이스 쓰기에는 준비된 문(prepared statements)을 사용하십시오.

일반적인 원인으로는 폼 메서드가 POST 대신 GET인 경우, 입력 필드에 name 속성이 누락된 경우, 잘못된 액션을 수행한 경우 등이 있습니다. URL또는 파일 업로드에 필요한 멀티파트 인코딩 유형이 누락되었을 수 있습니다. 이러한 사항들을 양식과 비교하여 확인하십시오.

예. AI는 HTML 폼을 생성할 뿐만 아니라 서버 측 유효성 검사, CSRF 보호 및 이스케이프 처리된 출력도 생성할 수 있습니다. Rev배포하기 전에 각 필드에 대한 규칙을 검토하고 보안 검사가 애플리케이션과 일치하는지 확인하십시오.

네. 폼과 핸들러를 공유해 주시면 AI가 메서드 불일치, 이름 속성 누락, 잘못된 액션 경로 또는 제출을 차단하는 유효성 검사 분기 등을 감지하여 수정 방법을 제안해 드릴 수 있습니다.

이 게시물을 요약하면 다음과 같습니다.