PHP の $_GET 変数と $_POST 変数は、ユーザー入力などの情報をフォームから取得するために使用されます。
注意すべき重要な点の 1 つは、HTML フォームを処理するときに、PHP は HTML ページのフォーム要素を PHP スクリプトで使用できるように自動的に作成できることです。
以下の例には、2 つの入力フィールドと送信ボタンを持つ HTML フォームが含まれています。
<html><head><metacharset="utf-8"><title>ソース コード ネットワーク (downcodes.com)</title></head><body> <formaction="welcome.php" method="post" > 名前: <inputtype="text"name="fname">年齢: <inputtype="text"name="age"><inputtype="submit"value="submit"></form> </body>< /html>
ユーザーが上記のフォームに記入して送信ボタンをクリックすると、フォーム データが「welcome.php」という名前の PHP ファイルに送信されます。
ようこそ<?phpecho$_POST["fname"]; ?>!<br>あなたの年齢は<?phpecho$_POST["age"]; です。
次の章では、PHP の $_GET 変数と $_POST 変数について説明します。
次の例では、ドロップダウン メニューに 3 つのオプションを設定します。アクション属性の値が空の場合、その値は現在のスクリプトに送信されます。 select の name 属性を使用したドロップダウン メニュー:
<?php$q= isset($_GET['q'])? htmlspecialchars($_GET['q']): '';if($q){ if($q=='CODERCTO'){ echo'ソース コード ネットワーク<br>http://www.downcodes.com' }elseif($q=='GOOGLE'){ echo'Google 検索<br>http://www.google.com'; }elseif($q=='TAOBAO'){ echo'タオバオ<br>http://www.taobao.com' }}else{?><formaction=""method="get"> <selectname="; q"> <optionvalue="">サイトを選択します:</option> <optionvalue="CODERCTO">codercto</option> <optionvalue="GOOGLE">Google</option> <optionvalue="TAOBAO">タオバオ</option> </select> <inputtype="submit"value="submit"> </form><?php}?>
ドロップダウン メニューが複数選択 (multiple="multiple") の場合は、select name="q[]" を配列として設定することで取得できます。コードは次のとおりです。
<?php$q= isset($_POST['q'])? $_POST['q']: '';if(is_array($q)){ $sites= array( 'CODERCTO'=> 'ソースコードネットワーク : http://www.downcodes.com'、'GOOGLE'=> 'Google 検索: http://www.google.com'、'TAOBAO'=> 'タオバオ: http://www.taobao.com', ); foreach($qas$val){ //PHP_EOL は改行に使用されます echo$sites[$val] } }else{?><formaction; =" "method="post"> <selectmultiple="multiple"name="q[]"> <optionvalue="">サイトを選択してください:</option> <optionvalue="CODERCTO">codercto</option> <optionvalue="GOOGLE">Google</option> <optionvalue="TAOBAO">タオバオ</option> </select> <inputtype="submit"value="Submit"> </form><?php}?>
PHP ラジオ ボタン フォームの name 属性の値は一致していますが、値の値は異なります。コードは次のとおりです。
<?php$q= isset($_GET['q'])? htmlspecialchars($_GET['q']): '';if($q){ if($q=='CODERCTO'){ echo'ソース コード ネットワーク<br>http://www.downcodes.com' }elseif($q=='GOOGLE'){ echo'Google 検索<br>http://www.google.com'; }elseif($q=='TAOBAO'){ echo'タオバオ<br>http://www.taobao.com' }}else{?><formaction=""method="get"> <inputtype="; radio"name="q"value="CODERCTO"/>codercto<inputtype="radio"name="q"value="GOOGLE"/>Google <inputtype="radio"name="q"value="TAOBAO"/>タオバオ <inputtype="submit"value="submit"></form><?php}?>
PHP チェックボックス チェックボックスでは複数の値を選択できます。
<?php$q= isset($_POST['q'])? $_POST['q']: '';if(is_array($q)){ $sites= array( 'CODERCTO'=> 'ソースコードネットワーク : http://www.downcodes.com'、'GOOGLE'=> 'Google 検索: http://www.google.com'、'TAOBAO'=> 'タオバオ: http://www.taobao.com', ); foreach($qas$val){ //PHP_EOL は改行に使用されます echo$sites[$val] } }else{?><formaction; =" "method="post"> <inputtype="checkbox"name="q[]"value="CODERCTO">コーダーCTO<br> <inputtype="checkbox"name="q[]"value="GOOGLE">Google<br> <inputtype="checkbox"name="q[]"value="TAOBAO">タオバオ<br> <inputtype=" submit"value="submit"></form><?php}?>
可能な限り、ユーザー入力を (クライアント側のスクリプト経由で) 検証する必要があります。ブラウザーの検証が高速になり、サーバーへの負担が軽減されます。
ユーザー入力をデータベースに挿入する必要がある場合は、サーバー検証の使用を検討する必要があります。サーバー上のフォームを検証する良い方法は、別のページにジャンプするのではなく、フォーム データを現在のページに渡すことです (非同期送信の方が良いです)。これにより、ユーザーは同じフォーム ページでエラー メッセージを取得できます。ユーザーがエラーを見つけやすくなります。