>  기사  >  백엔드 개발  >  PHP 기본 POST 및 GET

PHP 기본 POST 및 GET

WBOY
WBOY원래의
2016-08-08 09:19:081058검색

post와 get의 차이점

핵심:

*.Post는 표시될 필요가 없습니다. 데이터를 전송할 때 URL이 표시되어야 하며, Get 메소드가 URL에 표시되어야 합니다.
*.Post는 2M에 달하는 대용량 데이터를 전송하는 반면, Get 메소드는 URL 길이 제한으로 인해 약 1024바이트만 전송할 수 있습니다.
*.Post는 이름에서 알 수 있듯이 전송합니다. 데이터를 서버 세그먼트로 가져오려면 Get은 서버 세그먼트에서 데이터를 가져오는 것입니다. Get도 데이터를 전송할 수 있는 이유는 서버에 어떤 종류의 데이터가 필요한지 알려주기 위해서입니다. Post 정보는 http 요청의 내용으로 사용되며, Get은 Http 헤더에 포함되어 전송됩니다.

상세 설명:

1. Get은 URL 요청을 통해 사용자의 데이터를 전달하고 양식의 각 필드 이름과 해당 내용을 문자열 쌍으로 연결합니다. , 그리고 action 속성이 가리키는 프로그램의 URL 이후에는 사용자가 링크를 클릭하는 것처럼 데이터가 URL에 직접 표시됩니다.

Post 메소드는 HTTP 게시 메커니즘을 사용하여 위치를 지정합니다. HTML의 양식에 있는 각 필드의 이름과 내용 헤더(헤더)는 action 속성이 가리키는 프로그램에서 처리하기 위해 함께 서버로 전송됩니다. 프로그램은 양식 데이터를 읽고 표준 입력( stdin)

2. Get 메서드에서는 변수 값을 얻으려면 Request.QueryString을 사용해야 합니다.

Post 메소드는 Request.Form을 사용하여 제출된 콘텐츠에 액세스합니다.
3. Get 방식으로 전송되는 데이터의 양은 매우 작아 일반적으로 약 2KB로 제한되지만 Post 방식보다 실행 효율성이 좋습니다. Post 방식으로 전송되는 데이터의 양이 상대적으로 커서 서버가 데이터를 읽을 때까지 대기하며, 대용량 데이터를 가진 서버에 대한 악의적인 공격을 피하기 위해 바이트 제한도 있습니다.
제안: 제출한 데이터를 한꺼번에 제출할 수 있는지 확실하지 않은 경우 Post 메서드를 사용해 보세요

4. Get 메서드를 사용하여 데이터를 제출하면 보안 문제가 발생할 수 있습니다. 양식 제출을 위해 Post 메소드를 사용합니다. (예를 들어 로그인 페이지에서 Get 메소드를 통해 데이터를 제출하면 사용자 이름과 비밀번호가 나타납니다.


이제 페이지를 캐시할 수 있는 경우 URL에 표시됩니다. 고객의 컴퓨터에 접근할 수 있으며, 사용자의 계정은 이력 기록 및 비밀번호에서 얻을 수 있습니다)

Post 메소드로 제출된 양식 페이지의 일반적인 문제점은 페이지를 새로 고칠 때 대화 상자가 팝업된다는 것입니다. 제안: 보안상의 이유로 Post를 사용하여 데이터를 제출하는 것이 가장 좋습니다.

5. Get은 양식 형식의 데이터 세트 값을 ASCII 문자로 제한하고 Post는 전체 ISO10646 문자를 지원합니다. 세트.

6. Get은 Form의 기본 메소드입니다.

HTTP 프로토콜에는 작업 방식을 나타내는 동사 4개(GET, POST, PUT, DELETE)가 있습니다. 이는 네 가지 기본 작업에 해당합니다.


GET은 리소스를 얻는 데 사용됩니다.

POST는 새 리소스를 만드는 데 사용됩니다(리소스 업데이트에도 사용할 수 있음)

PUT은 리소스 업데이트에 사용됩니다. DELETE는 리소스를 삭제하는 데 사용됩니다.




PHP는 서버의 다양한 구성에 따라 post/get을 통해 얻은 데이터를 자동으로 이스케이프합니다.

, post 및 get을 통해 데이터를 가져올 때 ',"와 같은 일부 특수 문자가 이스케이프될 수 있습니다. 이 문제는 주로 PHP 매직 따옴표로 인해 발생합니다. PHP 매직 따옴표에는 Magic_quotes_gpc, Magic_quotes_runtime, Magic_quotes_sybase가 포함됩니다.

magic_quotes_gpc를 정리하면 다음과 같습니다.

1. Magic_quotes_gpc=on의 경우

문자열 데이터 입출력을 할 수 없습니다

addlashes()와 Stripslashes() 연산 중에는 데이터가 정상적으로 표시됩니다.

이때 입력 데이터에 addlashes()를 수행하면

Magic_quotes_gpc=off를 사용하면 초과 백슬래시를 제거하기 위해 Stripslashes()를 사용해야 하지만, addlashes()가 수행하므로

출력 형식을 지정하기 위해 Stripslashes()를 사용할 필요가 없습니다. 데이터베이스에 백슬래시를 쓰지 않고 mysql이 sql 문 실행을 완료하도록 도와줍니다.

php 주입의 Magic_quotes_gpc 정보 Magic_quotes_gpc = on

php 구성 파일인 php.in은 누구나 알고 있습니다. 내부의 Magic_quotes_gpc 구성이 켜져 있으면 그건 Magic_quotes_gpc = on입니다. PHP에 대해 조금 아는 사람이라면 누구나 알 것입니다.

그런 다음 숫자 필드를 삽입해야 합니다.

올바르게 입력한 경우:

SELECT *

FROM tbltable_users WHERE userid=admin AND 비밀번호 = 'admin' LIMIT 0,1

If 공격자가 사용자 이름에 있으면 다음을 입력합니다: admin OR 1 =1 #, 삽입된 SQL 문은 다음과 같습니다:

SELECT * FROM table_users WHERE userid=admin OR 1 =1 # AND 비밀번호 = 'admin' LIMIT 0 ,1

주입은 아래에서 수행할 수 있습니다.

<span> 1</span> <?
<span> 2</span><span>if</span> ( <span>isset</span>(<span>$_POST</span>["f_login"<span>] ) ){
</span><span> 3</span><span>//</span><span>连接数据库</span><span> 4</span><span>$t_strUid</span> = <span>$_POST</span>["f_uid"<span>];
</span><span> 5</span><span>$t_strPwd</span> = <span>$_POST</span>["f_pwd"<span>];
</span><span> 6</span><span>$t_strSQL</span> = "SELECT * FROM tbl_users WHERE uid=<span>$t_strUid</span> AND password = '<span>$t_strPwd</span>'      LIMIT 0,1"<span>;
</span><span> 7</span><span>if</span> ( <span>$t_hRes</span> = <span>mysql_query</span>(<span>$t_strSQL</span><span>) ){
</span><span> 8</span><span>//</span><span> 成功查询</span><span> 9</span><span>          }
</span><span>10</span><span>       }
</span><span>11</span> ?>
php.ini의 display_errors 옵션을 display_errors = off로 설정하면 이를 방지할 수 있습니다.

magic_quotes_runtime
        如果打开的话,大部份从外部来源取得数据并返回的函数,包括从数据库和文本文件,所返回的数据都会被反斜线转义。该选项可在运行的时改变,在 PHP 中的默认值为 off。

magic_quotes_sybase
        如果打开的话,将会使用单引号对单引号进行转义而非反斜线。此选项会完全覆盖 magic_quotes_gpc。如果同时打开两个选项的话,单引号将会被转义成 ”。而双引号、反斜线 和 NULL 字符将不会进行转义。

由于不同服务器的配置不同,需要在代码中用get_magic_quotes_gpc() 检测服务器配置。

<span>1</span><span>if</span>(<span>isset</span>(<span>$_POST</span>['c'<span>])){
</span><span>2</span><span>$s</span> = <span>$_POST</span>['c'<span>];
</span><span>3</span><span>if</span>(<span>get_magic_quotes_gpc</span><span>())
</span><span>4</span><span>$s</span> = <span>stripslashes</span>(<span>$s</span>);<span>//</span><span>stripslashes() 函数删除由 addslashes() 函数添加的反斜杠。
</span><span>5</span><span>//do something</span><span>6</span> }

以上就介绍了PHP基础之POST与GET,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

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