以下はPHPでBMIを計算するプログラムです。リクエストメソッドを取得する意味がよくわかりません。
$request_method = $_SERVER['REQUEST_METHOD'];
の部分です。
<?php
// 初期化
$height = '';
$weight = '';
$bmi = '';
$err_msg = array(); // エラーメッセージ用の配列
// リクエストメソッドを取得する
$request_method = $_SERVER['REQUEST_METHOD'];
// 「BMI計算」ボタンをクリックした(POSTされた)場合に処理する
if ($request_method === 'POST') {
// POSTデータを取得する
$height = get_post_data('height');
$weight = get_post_data('weight');
// 身長の値が数値かどうかをチェックする
if (is_numeric($height) === FALSE) {
$err_msg[] = '身長は数値を入力してください';
}
// 体重の値が数値かどうかをチェックする
if (is_numeric($weight) === FALSE) {
$err_msg[] = '体重は数値を入力してください';
}
// エラーがない場合にBMIを算出する
if (count($err_msg) === 0) {
// BMIを算出する
$bmi = calc_bmi($height, $weight);
}
}
/**
* BMIを計算する
* @param mixed $height 身長(cm)
* @param mixed $weight 体重(kg)
* @return float 計算したBMIの値を返す
*/
function calc_bmi($height, $weight) {
return round($weight/($height/100*$height/100),1);
}
/**
* POSTデータを取得する
* @param str $key 配列キー
* @return str POSTの値
*/
function get_post_data($key) {
$str = '';
if (isset($_POST[$key]) === TRUE) {
$str = $_POST[$key];
}
return $str;
}
?>
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>BMI計算</title>
</head>
<body>
<h1>BMI計算</h1>
<form method="post">
身長(cm) : <input type="text" name="height" value="<?php print $height ?>">
体重(kg) : <input type="text" name="weight" value="<?php print $weight ?>">
<input type="submit" value="BMIを計算する">
</form>
<?php if (count($err_msg) > 0) { ?>
<?php foreach ($err_msg as $value) { ?>
<p><?php print $value; ?></p>
<?php } ?>
<?php } ?>
<?php if ($request_method === 'POST' && count($err_msg) === 0) { ?>
<p>あなたのBMIは<?php print $bmi; ?>です</p>
<?php } ?>
</body>
</html>
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
通常の HTTP 要求は GET メソッドを使用します。
ご提示の処理では、フォーム動作が
* action 省略 → 現在と同じ URL へ HTTP 要求
* POST メソッドで HTTP 要求
となっているので、
以下のような流れとするためにメソッドで判定していると思われます。
ブラウザ:
"/bmi.php" を GET 要求
↓
サーバー:
投稿された値がないので(=POSTではない)、
「あなたの...」は省略した状態で HTML を応答 (初回表示)
↓
ブラウザ:
利用者が入力したフォーム値を添加して
"/bmi.php" を POST 要求
↓
サーバー:
投稿された値があるので(=POST)、
BMIを計算して「あなたの...」を含んだ状態で HTML を応答 (結果表示)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP PHPでCookieを使った訪問回数について 1 2023/05/28 14:10
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- PHP php ログイン 1 2022/11/01 00:24
- PHP PHPでユーザー情報を入力して簡易ログイン機能をつくってみたのですが 1 2023/05/29 08:51
- PHP PHP MySql 画像を取得 1 2022/06/04 14:05
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
- PHP 入力した部分を表示させたまま(保持)するにはどうすれば良いでしょうか? 1 2023/01/25 11:14
- PHP php テーブルが作成できない 1 2022/11/17 23:41
- MySQL php テーブルを作れない 2 2022/11/17 18:22
- PHP PHPで画像の渡しが上手く行きません。 1 2023/02/02 09:39
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
inputタグでphpを呼び出す際、...
-
PEAR Image_QRCodeのエラー
-
リクエストメソッド
-
form actionで二つ送信先を指定...
-
戻れないです
-
【PHP】ページを更新すると勝手...
-
ワンクリックしかできないクリ...
-
同じコードを使っているのにエ...
-
ボタンのクリック数を合計保存...
-
ユーザーに入力してもらった値...
-
セッション PHPとHTML
-
ジャンプ先アドレスの最後に?...
-
header(Location: next.php) だ...
-
【初歩】ログアウトを【2回押さ...
-
onedrive にexcelファイルをア...
-
CFileDialogの最初のディレクト...
-
透過PNGが透過されない!!
-
フォームで戻った際に入力済み...
-
別ファイルの変数を呼び出した...
-
PHPのif文でその処理を途中で抜...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
form actionで二つ送信先を指定...
-
データ送信をボタンを押さずに...
-
ボタンのクリック数を合計保存...
-
テキストボックスにデータベー...
-
FORMで送信ボタンと戻るボタン...
-
PHPとCSVで簡易データベースな...
-
PHP table内、<a href使って su...
-
header.locationで、画面遷移、GET
-
【WordPress】投稿がないカテゴ...
-
header(Location: next.php) だ...
-
別のファイルへ値を受け渡す方法
-
値が渡されない
-
ワンクリックしかできないクリ...
-
inputタグでphpを呼び出す際、...
-
【PHP】ページを更新すると勝手...
-
リクエストメソッド
-
条件を満たしたら、別のページ...
-
受け取ったパラメータを次のphp...
-
PEAR Image_QRCodeのエラー
-
GETメソッドで文字列として+を...
おすすめ情報