Web言語のお勉強~ど素人が往く~

かつてVB6を1年くらい触った事があるだけのど素人がWeb言語に挑戦します。勉強結果を随時発表します。

PHPのお勉強「POSTで入力画面から受け取った値を元に算出」


GETよりもPOSTを使う方が良いそうです

昨日書いた記事はURL引数をGETで受け取り、直接DBのSQL文に使いたいという事を書きました。

PHPのお勉強「URL引数を受け取る」 - Web言語のお勉強~ど素人が往く~
URL引数をPHPで受け取るサンプル。GETよりもPOSTが良いそうです(^_^;)

多くのブロガー(プログラマー)の方々から御助言を頂きました。
本当にありがとうございます。

少し紹介させて頂きます。

朝一、7gogoのトークの方でid:tktyoさんとid:QsFさんに教えてもらいました。

755

GETは危ないねー。
POSTを使った方が安全ですよ~。

とのこと。GETダメでしたか(^^;
POSTを使うと良いのですね。
ありがとうございます!


ブコメには

id:operationservicebuさん


GETよりもPOSTの方がいいと思います。
参考(http://www.phpbook.jp/appli/form/index3.html) 
あと、受け取った値をチェックする必要性として。
参考(http://qiita.com/mpyw/items/2f9955db1c02eeef43ea

やはりPOSTの方が良いんですね。
POSTにします!
受け取った値は、やはりチェックしないといけないんですねー。
どうもありがとうございます!

id:escape_artistさん


あかんやつです!!受け取りまでは問題ないけど、そのまま出力しちゃあアカン。
htmlspecialchars関数など使いましょう。
SQL投げる場合はプリペアドステートメント使いましょう

あかんですか!
おおきにです。
htmlspecialchars関数を使って受け取ろうと思います。
また、プリペアドステートメントは使ってみたのですが、うまく使いこなせなくてqueryを使って取得していました。
もう一度勉強して見たいと思います。
どうもありがとうございます(^^)/

Webサイト構築プロジェクトを進めるはずが・・・

今日の日中に思いついたプログラムをぜひとも作りたくなってしまい、早速作ってみました(^^)v
皆さんに教えて頂いたPOSTとhtmlspecialcharsを使って実装しました!

初のメインブログ向けのWebServiceです。

【入力側のページ】

<form action="seimeihoken02.php" method="post">
 子供の独立までの年数: <input type="text" name="nensu" /><br /><br />
 
 【毎年掛かる金額】以下は全て万円単位で記入して下さい。<br />
 現在の年間生活費: <input type="text" name="nenkan_seikatsuhi" /><br />
 - 夫の死亡後、不要になる支出: <input type="text" name="fuyo_shishutsu" /><br />
 + 夫の死亡後、必要になる支出: <input type="text" name="hitsuyo_shishutsu" /><br />
 - 遺族年金額: <input type="text" name="izoku_nenkin" /><br />
 - 妻の年収: <input type="text" name="tsuma_nenshu" /><br /><br />
 
 【一度きりの金額】<br />
 + その他の支出: <input type="text" name="sonota_shishutsu" /><br />
 - 現在の貯蓄額: <input type="text" name="chochiku" /><br />
 <input type="submit" />
</form>


【出力側のページ】

<?php
  try
  {
      // 受け取った値を変数へ格納
      $nensu = htmlspecialchars($_POST['nensu']);
      $seikatsuhi = htmlspecialchars($_POST['nenkan_seikatsuhi']);
      $fuyo_shishutsu = htmlspecialchars($_POST['fuyo_shishutsu']);
      $hitsuyo_shishutsu = htmlspecialchars($_POST['hitsuyo_shishutsu']);
      $izoku_nenkin = htmlspecialchars($_POST['izoku_nenkin']);
      $tsuma_nenshu = htmlspecialchars($_POST['tsuma_nenshu']);
      $sonota_shishutsu = htmlspecialchars($_POST['sonota_shishutsu']);
      $chochiku = htmlspecialchars($_POST['chochiku']);

      // 全角英数字を半角英数字へ変換
      $nensu = mb_convert_kana($nensu,"a");
      $seikatsuhi = mb_convert_kana($seikatsuhi,"a");
      $fuyo_shishutsu = mb_convert_kana($fuyo_shishutsu,"a");
      $hitsuyo_shishutsu = mb_convert_kana($hitsuyo_shishutsu,"a");
      $izoku_nenkin = mb_convert_kana($izoku_nenkin,"a");
      $tsuma_nenshu = mb_convert_kana($tsuma_nenshu,"a");
      $sonota_shishutsu = mb_convert_kana($sonota_shishutsu,"a");
      $chochiku = mb_convert_kana($chochiku,"a");
      
      // 入力値確認
      echo '【入力値確認】<br />';
      echo '子供の独立までの年数: '.$nensu.'<br />';
      echo '現在の年間生活費: '.$seikatsuhi.'<br />';
      echo '夫の死亡後、不要になる支出: '.$fuyo_shishutsu.'<br />';
      echo '夫の死亡後、必要になる支出: '.$hitsuyo_shishutsu.'<br />';
      echo '遺族年金額: '.$izoku_nenkin.'<br />';
      echo '妻の年収: '.$tsuma_nenshu.'<br /><br />';
      echo 'その他の支出: '.$sonota_shishutsu.'<br />';
      echo '現在の貯蓄額: '.$chochiku.'<br /><br />';

      // 必要金額計算
      $nengaku = ((int)$seikatsuhi - (int)$fuyo_shishutsu + (int)$hitsuyo_shishutsu - (int)$izoku_nenkin - (int)$tsuma_nenshu) * (int)$nensu;
      $sougaku = (int)$nengaku + (int)$sonota_shishutsu - (int)$chochiku;
      
      echo '<h3>あなたが加入しなければいけない生命保険の必要死亡保障額は ';
      echo (int)$sougaku;
      echo ' 万円です。</h3> ';
  }
  catch (Exception $e)
  {
      die($e->getMessage());
  }
?>

実際に配置したphpファイルのURLは下記に。

マネー報道 WebService~生命保険計算~
http://moneyreport.link/service/seimeihoken01.php


画面イメージ
f:id:MoneyReport:20140708013400p:plain


作ったまでで補足はメインブログで明日のお昼休みに!

よくわかるPHPの教科書 【PHP5.5対応版】

よくわかるPHPの教科書 【PHP5.5対応版】