>  기사  >  백엔드 개발  >  PHP 양식 학습: $_GET 및 $_POST 변수의 사용 및 차이점

PHP 양식 학습: $_GET 및 $_POST 변수의 사용 및 차이점

WBOY
WBOY원래의
2021-10-29 16:28:434392검색

저번 글에서 "PHP 폼 학습시 폼에 포함된 이메일과 URL은 어떻게 확인하나요?"를 가져왔습니다. 》에서는 PHP에서 이메일과 URL을 양식에서 확인하는 방법에 대한 지식을 자세히 소개합니다. 이번 글에서는 PHP의 $_GET 변수와 $_POST 변수에 대해 살펴보겠습니다. 모두에게 도움이 되기를 바랍니다!

PHP 양식 학습: $_GET 및 $_POST 변수의 사용 및 차이점

이전 기사에서는 필수 데이터의 유효성을 검사하는 방법과 정규식을 통해 양식의 이메일과 URL의 유효성을 검사하는 방법을 배웠습니다. 그 중에는 $_GET 변수와 $_POST 변수가 있습니다. 다음으로 $_GET 변수와 $를 살펴보겠습니다. _POST 변수 사용 관련 지식. $_GET 变量与$_POST 变量的影子,接下来我们就来看一看$_GET 变量与$_POST 变量使用的相关知识。

<span style="font-size: 20px;">PHP $_GET </span>变量

我们前面在学习的时候已经了解到了 $_GET 变量用于收集来自 method="get" 的表单中的值。从带有 GET 方法的表单发送的信息,对任何人都是可见的(会显示在浏览器的地址栏),并且对发送信息的量也有限制。其实也可以看成是通过 URL 参数传递给当前脚本的变量的数组。

在使用 $_GET 变量时,所有的变量名和值都会显示在 URL 中。所以在发送密码或其他敏感信息时,不应该使用这个方法。不过,正因为变量显示在 URL 中,因此可以在收藏夹中收藏该页面。在某些情况下,这是很有用的。

接下来我们通过示例来看一下:

<html>
 <head>
     <meta charset="utf-8">
     <title>php中文网(php.cn)</title>
 </head>
 <body>
 
 <form action="demo.php" method="get">
     名字: <input type="text" name="name"><br>
     性别:<input type="radio" name="sex" value="男" checked>男
     <input type="radio" name="sex" value="女">女<br>
     年龄: <input type="text" name="age"><br>
     <input type="submit" value="提交">
 </form>
 
 </body>
 </html>

提交到demo.php的内容为:

<?php
 header("Content-type:text/html;charset=utf-8");    //设置编码
 echo "你的姓名是:" .$_GET[&#39;name&#39;] ."<br/>";
 echo "你的性别是:"  .$_GET[&#39;sex&#39;]."<br/>";
 echo "你的年龄是:".$_GET[&#39;age&#39;];
 ?>

输出结果:

PHP 양식 학습: $_GET 및 $_POST 변수의 사용 및 차이점

我们发现我们在表单填写的值,都显示在Url栏中。那么我们在什么时候使用 method="get"呢。

在 HTML 表单中使用 method="get" 时,所有的变量名和值都会显示在 URL 中。所以在发送密码或其他敏感信息时,不应该使用这个方法!然而,正因为变量显示在 URL 中,因此可以在收藏夹中收藏该页面。在某些情况下,这是很有用的。

其中需要注意的是:HTTP GET 方法不适合大型的变量值。它的值是不能超过 2000 个字符的。

<strong><span style="font-size: 20px;">$_POST</span></strong> 变量

在上述示例中我们讲到了$_GET 变量,接下来我们就来看一下$_POST 变量,预定义的 $_POST 变量用于收集来自 method="post" 的表单中的值。

从带有 POST 方法的表单发送的信息,对任何人都是不可见的也不会像$_GET 变量一样显示在浏览器的地址栏,并且对发送信息的量也没有限制。然而,默认情况下,POST 方法的发送信息的量最大值为 8 MB,可以通过设置 php.ini 文件中的 post_max_size 进行更改。

接下来我们通过示例来看一下:

<html>
 <head>
     <meta charset="utf-8">
     <title>php中文网(php.cn)</title>
 </head>
 <body>
 
 <form action="demo.php" method="post">
     名字: <input type="text" name="name"><br>
     性别:<input type="radio" name="sex" value="男" checked>男
     <input type="radio" name="sex" value="女">女<br>
     年龄: <input type="text" name="age"><br>
     <input type="submit" value="提交">
 </form>
 
 </body>
 </html>

其中提交到demo.php的内容为:

<?php
 header("Content-type:text/html;charset=utf-8");    //设置编码
 echo "你的姓名是:" .$_POST[&#39;name&#39;] ."<br/>";
 echo "你的性别是:"  .$_POST[&#39;sex&#39;]."<br/>";
 echo "你的年龄是:".$_POST[&#39;age&#39;];
 ?>

输出结果:

PHP 양식 학습: $_GET 및 $_POST 변수의 사용 및 차이점

其中我们看到,我们用POST提交的信息,没有在Url 栏中显示,所以,POST 比GET 要更为安全一点。下面我们来总结一下$_GET与$_POST的区别。

<strong><span style="font-size: 20px;">$_GET</span></strong>$_POST的区别

get是从服务器上获取数据,post

<span style="font-size: 20px;">PHP $_GET </span>변수

우리는 $_GET 변수가 method="get" 형식에서 값을 수집하는 데 사용된다는 것을 이전에 배웠습니다. GET 메소드를 사용하여 양식에서 전송된 정보는 모든 사람이 볼 수 있으며(브라우저의 주소 표시줄에 표시됨) 전송되는 정보의 양에는 제한이 있습니다. 실제로 이는 URL 매개변수를 통해 현재 스크립트에 전달되는 변수 배열로 볼 수도 있습니다.

$_GET 변수를 사용하면 모든 변수 이름과 값이 URL에 표시됩니다. 따라서 비밀번호나 기타 민감한 정보를 보낼 때는 이 방법을 사용해서는 안 됩니다. 그러나 변수가 URL에 나타나므로 해당 페이지를 북마크에 추가할 수 있습니다. 어떤 경우에는 이것이 유용합니다.

다음으로 예를 살펴보겠습니다.

rrreee

demo.php에 제출된 콘텐츠는 다음과 같습니다.

rrreee

출력 결과:
🎜🎜PHP 양식 학습: $_GET 및 $_POST 변수의 사용 및 차이점🎜🎜양식에 입력한 값은 다음과 같습니다. 모두 Url 열 중간에 표시됩니다. 그러면 언제 method="get"을 사용합니까? 🎜🎜HTML 형식에서 method="get"을 사용하면 모든 변수 이름과 값이 URL에 표시됩니다. 따라서 비밀번호나 기타 민감한 정보를 보낼 때 이 방법을 사용해서는 안 됩니다! 그러나 변수가 URL에 나타나므로 해당 페이지를 북마크에 추가할 수 있습니다. 어떤 경우에는 이것이 유용합니다. 🎜🎜HTTP GET 방식은 큰 변수 값에는 적합하지 않다는 점에 유의해야 합니다. 해당 값은 2000자를 초과할 수 없습니다. 🎜🎜<strong><span style="max-width:90%">$_POST</span></strong> 변수🎜🎜위의 예에서 $_GET 변수에 대해 이야기했습니다. 미리 정의된 $_POST 변수를 살펴보겠습니다. $_POST 변수는 method="post"의 양식에서 값을 수집하는 데 사용됩니다. 🎜🎜POST 메소드로 폼에서 전송된 정보는 누구에게도 보이지 않으며 $_GET 변수와 같이 브라우저의 주소 표시줄에 표시되지 않으며 전송되는 정보의 양에 영향을 미치지 않습니다. . 또한 제한도 없습니다. 그러나 기본적으로 POST 메소드로 전송되는 최대 정보량은 8MB이며 php.ini 파일에서 post_max_size를 설정하여 변경할 수 있습니다. 🎜🎜다음으로 예를 살펴보겠습니다.
🎜rrreee🎜demo.php에 제출된 콘텐츠는 다음과 같습니다.
🎜rrreee🎜출력 결과:
🎜🎜PHP 양식 학습: $_GET 및 $_POST 변수의 사용 및 차이점🎜🎜POST를 사용하여 정보는 Url 열에 표시되지 않으므로 POST가 GET보다 안전합니다. $_GET과 $_POST의 차이점을 요약해 보겠습니다. 🎜🎜<strong><span style="max-width:90%">$_GET</span></strong>$_POST🎜🎜get과의 차이점은 서버에서 데이터를 얻는 것이고 post는 서버 데이터로 전송합니다. 🎜🎜get은 제출된 양식의 ACTION 속성이 가리키는 URL에 매개변수 데이터 대기열을 추가합니다. 값은 양식의 각 필드에 일대일로 해당하며 URL에서 볼 수 있습니다. Post는 HTTP 게시 메커니즘을 사용하여 양식의 각 필드와 해당 콘텐츠를 HTML HEADER에 배치하고 이를 ACTION 속성이 가리키는 URL 주소로 전송합니다. 사용자는 이 프로세스를 볼 수 없습니다. 🎜🎜get 메소드의 경우 서버 측은 Request.QueryString을 사용하여 변수 값을 얻습니다. post 메소드의 경우 서버 측은 Request.Form을 사용하여 제출된 데이터를 얻습니다. 🎜🎜get으로 전송되는 데이터의 양은 적으며 2KB를 초과할 수 없습니다. 우편으로 전송되는 데이터의 양은 상대적으로 크며 일반적으로 기본적으로 제한이 없습니다. 그러나 이론적으로 최대 용량은 IIS4에서는 80KB, IIS5에서는 100KB입니다. 🎜🎜 겟 보안은 매우 낮고, 포스트 보안은 높습니다. 하지만 실행 효율성은 Post 방식보다 좋습니다. 🎜🎜두 가지의 차이점을 표로 정리하면 다음과 같습니다. 🎜

$_GET $_POST
URL에 표시 URL에 표시되는 문자 수에는 제한이 있습니다.
URL에는 표시되지 않습니다
제출된 데이터 용량 측면에서 는 일반적으로 2k 미만의 소량 데이터입니다. PHP는 기본적으로 8M의 대용량 데이터를 제출할 수 있습니다.
보안 측면에서 은 안전하지 않습니다. 은 상대적으로 안전합니다.
제출 원칙 격리되어 있습니다 데이터를 전체적으로 제출하세요
유연성 매우 유연합니다. 페이지 이동으로 데이터를 전송할 수 있습니다. 유연하지 않으며 양식에 반드시 참여해야 합니다
Common use More Commonly Used 는 $_GET

보다 덜 일반적입니다. 차이점을 통해 다음과 같이 결론을 내릴 수 있습니다.

  • get 메소드의 보안은 Post 메소드보다 나쁩니다. 정보가 포함되어 있으면 Post 데이터 제출 방법을 사용하는 것이 좋습니다.

  • 데이터 쿼리를 수행할 때는 Get 메서드를 사용하는 것이 좋으며, 데이터 추가, 수정 또는 삭제를 수행할 때는 Post 메서드를 사용하는 것이 좋습니다. ;

관심이 있으시면 "PHP 비디오 튜토리얼"을 클릭하여 PHP에 대해 자세히 알아보세요.

위 내용은 PHP 양식 학습: $_GET 및 $_POST 변수의 사용 및 차이점의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.