ホームページ >バックエンド開発 >PHPチュートリアル >PHP の基本 POST と GET、phppostget_PHP チュートリアル

PHP の基本 POST と GET、phppostget_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 09:45:091134ブラウズ

PHPの基本POSTとGET、phppostget

postとgetの違い キーポイント: *.Postがデータを送信する場合、URLにデータを表示する必要はありませんが、GetメソッドはURLに表示する必要があります。
*.Post は 2M に達する可能性がある大量のデータを送信しますが、Get メソッドは URL の長さの制限により約 1024 バイトしか転送できません。その名前が示すように、サーバーにデータを送信します。セグメント、Get はサーバー セグメントからのデータの取得を表します。 Get がデータの送信もできる理由は、必要なデータの種類をサーバーに伝えるためです。 Post 情報は http リクエストの内容として使用され、Get は Http ヘッダーで送信されます。 ​
詳細な説明: 1. Get は、URL リクエストを通じてユーザーのデータを転送し、フォーム内の各フィールドの名前とその内容を文字列のペアとして接続し、action 属性が指すプログラムの URL に配置します。ユーザーと同じように、リンクをクリックするのと同じように、URL 上に直接表示されます。 Post メソッドは、HTTP post メカニズムを使用して、フォームの各フィールドの名前とその内容を HTML ヘッダー (ヘッダー) に配置し、action 属性で指定されたプログラムによる処理のためにサーバーに送信します。標準入力 (stdin) メソッドでは、フォーム データを読み取り、処理します。 ​ 2. Get メソッドは、変数の値を取得するために Request.QueryString を使用する必要があります。 Post メソッドは Request.Form を使用して、送信されたコンテンツにアクセスします。
3. Get メソッドによって送信されるデータの量は非常に少なく、通常は約 2 KB に制限されますが、実行効率は Post メソッドよりも優れています。 Post メソッドで転送されるデータの量は比較的多く、サーバーがデータを読み取るまで待機します。これは、大量のデータによるサーバーへの悪意のある攻撃を避けるためです。
提案: 送信するデータを一度に送信できるかどうかわからない場合は、Post メソッドを使用してみてください。 ​ 4. Get メソッドを使用してデータを送信すると、セキュリティの問題が発生します。フォームの送信には Post メソッドを使用することをお勧めします (たとえば、ログイン ページでは、Get メソッドを使用してデータを送信すると、ユーザー名とパスワードが表示されます)。 。 URL では、ページをキャッシュできる場合、または他の誰かが顧客のマシンにアクセスできる場合、ユーザーのアカウントとパスワードを履歴レコードから取得できます) Post メソッドを使用して送信されたフォーム ページでよくある問題は、ページが更新されるときにダイアログ ボックスがポップアップすることです。推奨事項: セキュリティ上の理由から、データの送信には Post を使用することが最善です ​ 5. Get は、Form フォーム内のデータ セットの値を ASCII 文字に制限しますが、Post は ISO10646 文字セット全体をサポートします。
6. Get は Form のデフォルトのメソッドです。 ​ HTTP プロトコルには、操作方法を表す GET、POST、PUT、DELETE の 4 つの動詞があります。これらは 4 つの基本操作に対応します:


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 の場合、 リーリー 2. magic_quotes_gpc=offの場合 リーリー PHPインジェクションにおけるmagic_quotes_gpcについて magic_quotes_gpc = on php 設定ファイル php.in は誰でも知っています。その中の magic_quotes_gpc 設定がオンになっている場合、php について少しでも知っている人なら誰でもそれを知っています。

次に、数値フィールドを挿入する必要があります。

リーリー リーリー

正しく入力された場合:

SELECT *

FROM tbltable_users WHERE userid=admin AND パスワード = 'admin' LIMIT 0,1

攻撃者がユーザー名: admin OR 1 =1 # を入力した場合、挿入された SQL ステートメントは次のようになります:

SELECT * FROM table_users WHERE userid=admin OR 1 =1 # AND パスワード = 'admin' LIMIT 0,1

注射は以下から行えます

これを防ぐには、php.ini の display_errors オプションを display_errors = off に設定します。

magic_quotes_runtime

オンにすると、データベースやテキスト ファイルなどの外部ソースからデータを取得して返すほとんどの関数は、バックスラッシュでエスケープされたデータを返します。このオプションは実行時に変更でき、PHP のデフォルト値はオフです。

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> }

 

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/1043035.htmlTechArticlePHP基础之POST与GET,phppostget post 与 get区别 重点: *.Post传输数据时,不需要在URL中显示出来,而Get方法要在URL中显示。 *.Post传输的数据量大...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。