PHP の基本 POST と GET

WBOY
リリース: 2016-08-08 09:19:08
オリジナル
1126 人が閲覧しました

post と get の違い

重要なポイント:

*。Post がデータを送信する場合、URL にデータを表示する必要はありませんが、Get メソッドは URL に表示する必要があります。
*.Post は 2M に達する可能性がある大量のデータを送信しますが、Get メソッドは URL の長さの制限により約 1024 バイトしか転送できません。その名前が示すように、サーバーにデータを送信します。セグメント、Get はサーバー セグメントからのデータの取得を表します。 Get がデータの送信もできる理由は、必要なデータの種類をサーバーに伝えるためです。 Post 情報は http リクエストの内容として使用され、Get は Http ヘッダーで送信されます。

詳細な説明:

1. Get は、URL リクエストを通じてユーザーのデータを転送し、フォーム内の各フィールドの名前とその内容をペアの文字列として接続し、アクションが指すプログラムの URL に配置します。ユーザーがリンクをクリックするのと同じように、データは URL に直接表示されます

Post メソッドは、HTTP 投稿メカニズムを使用して、フォーム内の各フィールドの名前とそのコンテンツを HTML ヘッダー (ヘッダー) に配置します。参照されるプログラム処理では、標準入力 (stdin) メソッド

2 を使用してフォーム データを読み取り、処理します。変数の値を取得します。

Post メソッドは、Request.Form

を使用して、送信されたコンテンツにアクセスします。

3. Get メソッドによって送信されるデータの量は非常に小さく、通常は約 2 KB に制限されますが、実行効率は Post メソッドよりも優れています。
Post メソッドによって送信されるデータの量は比較的大きいです。 、サーバーがデータを読み取るのを待っています。また、大量のデータによるサーバーへの悪意のある攻撃を避けるためのバイト制限もあります。
提案: 送信するデータを一度に送信できるかどうかわからない場合は、Post メソッドを使用してみてください

4. Get メソッドを使用してデータを送信すると、セキュリティの問題が発生するため、フォームには Post メソッドを使用することをお勧めします。送信 (ログイン ページなど、Get を介してデータを送信すると、ユーザー名とパスワードが URL に表示されます。ページをキャッシュできる場合、または他のユーザーが顧客のマシンにアクセスできる場合は、ユーザーのアカウントとパスワードを履歴レコードから取得できます。 )

Post メソッドによって送信されたフォーム ページに関する一般的な問題は、ページが更新されるとダイアログ ボックスがポップアップすることです。提案: セキュリティ上の理由から、データの送信には Post を使用するのが最善です

5. Get はフォーム フォーム内のデータ セットの値を ASCII 文字に制限しますが、Post は ISO10646 文字セット全体をサポートします。

6. Get は Form のデフォルトのメソッドです。

HTTPプロトコルには、操作方法を示す動詞としてGET、POST、PUT、DELETEの4つがあります。これらは 4 つの基本操作に対応します:

GET はリソースの取得に使用されます
POST は新しいリソースの作成に使用されます (リソースの更新にも使用できます)

PUT はリソースの更新に使用されます

DELETE はリソースの削除に使用されます。




PHP は、post/get を通じて取得したデータを自動的にエスケープします

サーバーのさまざまな構成に応じて、post または get を通じてデータを取得するときに、「,」などの特殊文字が表示される場合があります。この問題は主に PHP のマジック クォートによって引き起こされます。PHP のマジック クオートには

と出力が含まれます。データベースの文字列データに対して

addslashes()とstripslashes()操作を実行すると、データは正常に表示されますこの時点で入力データに対してaddslashes()を実行した場合、

それを出力する必要があります。余分なバックスラッシュを削除するには、stripslashes() を使用します

2. magic_quotes_gpc=off の場合、入力データを処理するために addslashes() を使用する必要がありますが、出力をフォーマットするためにstripslashes() を使用する必要はありません

addslashes() はバックスラッシュをデータベースに書き込むのではなく、php インジェクションの magic_quotes_gpc について、magic_quotes_gpc 設定がオンになっている場合は、誰もが知っています。これは、magic_quotes_gpc = on を意味します。php を知っている人なら誰でも知っています。

次に、数値フィールド

<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> ?>
ログイン後にコピー

を挿入する必要があります。それが正しく入力されている場合:

SELECT *

FROM tbltable_users WHERE userid=admin AND password = ' admin' LIMIT 0,1

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

SELECT * FROM table_users WHERE userid=admin OR 1 =1 # AND password = 'admin' LIMIT 0,1
インジェクションは以下で実行できます。

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教程有兴趣的朋友有所帮助。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート