フォームデータの受渡し
戻る


[7]フォームデータの受渡し

【定義済み変数 $POST・$_GETなど】

フォームなどからHTTPプロコトルで送信されるデータは 「 定義済み変数 」に代入されます。

HTMLのフォームから送信される「method="POST"」の場合は$_POST['name'] で受け取り、「method="GET"」の場合は$_GET['name']で受け取ります。
では実際に送受信をしてみましょう。

このプログラムはソースをコピーしたりせずに、ご自分でタイプしてみてください。 また、ここ以降はそれぞれの関数についての個別解説はしませんので、 出てくる関数についての詳細はマニュアルを参考にしてください。

<?php
///////////////////////////////////////////
//PHPプログラムの動作テスト
//POST・GETの実験
///////////////////////////////////////////

//このスクリプトの名前
$myscript=$_SERVER['SCRIPT_NAME'];

echo ("
    <html>
    <body>
");

//POSTフォーム
echo ("
    <form method=\"POST\" action=\"$myscript\">
    <input type=\"text\" name=\"post\">
    <input type=\"submit\" value=\" POSTしてみる \">
    </form>
    <hr>
");

//GETフォーム
echo ("
    <form method=\"GET\" action=\"$myscript\">
    <input type=\"text\" name=\"get\">
    <input type=\"submit\" value=\" GETしてみる \">
    </form>
    <hr><br>
");

if(isset($_POST['post'])){
    print $_POST['post']."というデータがPOSTされました!<br>";
}

if(isset($_GET['get'])){
    print $_GET['get']."というデータがGETされました!<br>";
}

echo ("
    </body>
    </html>
");

?>

フォームのGET・POSTの入力枠に入力されたデータが表示されると思います。
POSTは主にデータの大きいものに、GETは主にデータの小さいものに使われます。
また、POSTの場合は<form method="POST" action="$myscript">でしか 送信できませんが、GETの場合は<a href="$myscript?name=name"> のように、送信するスクリプトに"?"を付けてでも送信できます。

GET送信の<form>を使わないデータの送信方法

<?php
///////////////////////////////////////////
//PHPプログラムの動作テスト
//GET送信の<form>を使わないデータの送信方法
///////////////////////////////////////////

//このスクリプトの名前
$script_php=$_SERVER['SCRIPT_NAME'];

//あなたのリモートIP
$ip=$_SERVER['REMOTE_ADDR'];

echo ("
    <html>
    <body>
");

echo ("
    <a href=\"$script_php?ip=$ip\">
    あなたのリモートIPをしらべてGETする!
    </a><hr>
");

if(isset($_GET['ip'])){
    print "あなたのリモートIPは【".$_GET['ip']."】です!<br>";
}

echo ("
    </body>
    </html>
");
?>


では、じゃんじゃんGETで送信してみましょう!送信ついでにメールも送信しちゃいましょう!

<?php
///////////////////////////////////////////
//PHPプログラムの動作テスト
//GET送信の<form>を使わないデータの送信方法2
//ついでにメールも送信しちゃう
///////////////////////////////////////////

//このスクリプトの名前
$script_php=$_SERVER['SCRIPT_NAME'];

//ページタイトル
$title="ご注文は何にしますか?";

//メールを受け取るアドレス
$mail="yourmail@yourdomain";

//送信メニュー
$menu1="カレーライス";
$menu2="ハンバーグライス";
$menu3="焼肉定食";
$menu4="マーボ丼";
$menu5="天津丼";
$menu6="ピラフ";
$menu7="おにぎり";

echo ("
    <html>
    <head>
    <title>$title</title>
    <meta http-equiv=\"content-type\" content=\"text/html; charset=Shift_JIS\">
    </head>
    <body>
");

echo ("
    $title<hr>
    <ol>
    <li><a href=\"$script_php?name=$menu1\">
    $menu1
    </a>
    <li><a href=\"$script_php?name=$menu2\">
    $menu2
    </a>
    <li><a href=\"$script_php?name=$menu3\">
    $menu3
    </a>
    <li><a href=\"$script_php?name=$menu4\">
    $menu4
    </a>
    <li><a href=\"$script_php?name=$menu5\">
    $menu5
    </a>
    <li><a href=\"$script_php?name=$menu6\">
    $menu6
    </a>
    <li><a href=\"$script_php?name=$menu7\">
    $menu7
    </a>
    </ol>
");

if(isset($_GET['name'])){
    print "ご注文は【".$_GET['name']."】ですね!<br>";

    //メールの言語を日本語に設定
    mb_language("Ja");
    //メールのエンコードをSJISに設定
    mb_internal_encoding("SJIS");
    //メールの表題
    $subject="注文メール";
    //メールの内容
    $main="ご注文は【".$_GET['name']."】です";
    //メールの送信元
    $frommail="From:".mb_encode_mimeheader("$title")."<".$mail.">";
    //メールを送信
    mb_send_mail($mail,$subject,$main,$frommail);
}

echo ("
    </body>
    </html>
");
?>

この項はこれで終わりです。簡単でしたね。



TOPへ