English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

PHP基本チュートリアル

PHP上級チュートリアル

PHP & MySQL

PHPリファレンスマニュアル

PHP GET と POST

このチュートリアルでは、HTTP GETとPOSTメソッドを使用して情報をサーバーに送信する方法、およびPHPを使用して情報を取得する方法を学びます。

サーバーに情報を送信する方法

Webブラウザは、HTTP(ハイパーテキスト伝送プロトコル)の2つの方法(GETとPOST)のうちの1つを使用してサーバーと通信します。2つの方法は異なる方法で情報を伝達し、異なる長所と短所があります。

GETメソッド

GETメソッドでは、データがURLパラメータとして送信され、通常「&」記号で名前と値のペアの文字列として分離されます。通常、GETデータを含むURLは以下のようになります:

http://www.example.com/action.php?name=john&age=24

URLの太字部分はGETパラメータであり、イタリック部分はこれらのパラメータの値です。と号(&)で結合することで、URLに複数のパラメータ=値を埋め込むことができます。GETメソッドでは、単純なテキストデータのみを送信できます。

GETメソッドの長所と短所

  • GETメソッドで送信されるデータがURLに表示されるため、特定のクエリ文字列値を使用してページにブックマークを追加できます。

  • GETメソッドは、ユーザー名やパスワードなどの機密情報を伝達するには適していないです。なぜなら、これらの情報はURLのクエリ文字列に完全に表示され、クライアントブラウザのメモリに保存される可能性があるからです。

  • GETメソッドはデータをサーバー環境変数に割り当てるため、URLの長さに制限があります。したがって、送信できるデータの総量には制限があります。

PHPは、URLを通じて送信されたまたはHTMLフォームをmethod="GET"を使用して送信された情報にアクセスするためのスーパーグローバル変数 $_GET を提供します。

<!DOCTYPE html>
<html>
<head>
    <title>オンラインサンプル PHP GET メソッド</title>
</head>
<?php
if(isset($_GET["name"])){
    echo \/p>";
}
?>
<form method="get" action="<?php echo $_SERVER["PHP_SELF"];?>">
    <label for="inputName">Name:</label>
    <input type="text" name="name" id="inputName">
    <input type="submit" value="送信">
</form>

POSTメソッド

POSTメソッドでは、データは処理スクリプトとともに独立した通信としてパックされてサーバーに送信されます。POSTメソッドで送信されたデータはURLでは見えません。

POSTメソッドの長所と短所

  • GETよりも安全です。なぜなら、ユーザーが入力した情報はURLのクエリストリングやサーバーログに表示されないためです。

  • 伝送可能なデータの量にはより大きな制限があり、テキストデータおよびバイナリデータ(アップロードファイル)をPOSTで送信できます。

  • POSTメソッドで送信されたデータはURLでは見えないため、特定のクエリを使用してページにブックマークを追加することはできません。

$_GETと同様に、PHPはPOSTメソッドを通じて送信されたまたはmethod="POST"を通じてHTMLフォームを提交した全ての情報にアクセスするための別の超全範囲変数$_POSTを提供します。

<!DOCTYPE html>
<html>
<head>
    <title>オンラインサンプル PHP POST メソッド</title>
</head>
<?php
if(isset($_POST["name"])){
    echo "<p>Hi, " . $_POST["name"] . "</p>";
}
?>
<form method="post" action="<?php echo $_SERVER["PHP_SELF"];?>">
    <label for="inputName">Name:</label>
    <input type="text" name="name" id="inputName">
    <input type="submit" value="送信">
</form>

$ _REQUEST 変数

PHPは別の超全範囲変数$_REQUESTを提供しており、この変数は$_GETおよび$_POST変数の値と$_COOKIE超全範囲変数の値を含んでいます。

<!DOCTYPE html>
<html>
<head>
    <title>オンラインサンプル PHP $_REQUEST 変数</title>
</head>
<?php
if(isset($_REQUEST["name"])){
    echo "<p>Hi, " . $_REQUEST["name"] . "</p>";
}
?>
<form method="post" action="<?php echo $_SERVER["PHP_SELF"];?>">
    <label for="inputName">Name:</label>
    <input type="text" name="name" id="inputName">
    <input type="submit" value="送信">
</form>

上級部分でPHPに関する情報を学びます。 cookieおよびフォーム処理の詳細情報。

注意:超全範囲変数$_GET、$_POSTおよび$_REQUESTはインビンディングであり、スクリプトの全てのスコープで常に利用可能です。