不正な値が入っているかチェックで質問です。動画は13...
では不正なパラメータがきた場合はどのような書き方をすればエラーキャッチできるか考えてみてください。
他にもあえて動かないようにしているコードもありますので、見つけて動くようにしていきましょう!
考えて変更をしてみましたので報告します。
今回の問題に関して、前回学んだ「registProduct.php」ファイルを参考にしました。
理由は// パラメータ改ざんチェックをこのページでもしていたことを思い出したので参考にしました。
【変更前のコード】
// カレントページのGETパラメータを取得
$currentPageNum = (!empty($_GET['p'])) ? $_GET['p'] : 1;
//パラメータに不正な値が入っているかチェック
if(!is_int((int)$currentPageNum)){
error_log('エラー発生:指定ページに不正な値が入りました');
header("Location:index.php"); //トップページへ
}
【変更後のコード】
// カレントページのGETパラメータを取得
$currentPageNum = (!empty($_GET['p'])) ? $_GET['p'] : 1;
// 表示件数
$listSpan = 20;
// 現在の表示レコード先頭を算出
$currentMinNum = (($currentPageNum-1)*$listSpan); //1ページ目なら(1-1)*20 = 0 、 2ページ目なら(2-1)*20 = 20
// DBから商品データを取得
$dbProductData = getProductList($currentMinNum);
// パラメータに不正な値が入っているかチェック
if(!empty($currentPageNum)
【変更後のページに追加】
// パラメータに不正な値が入っているかチェック
if(!empty($currentPageNum)
if(!empty($currentPageNum)
ご自身で考えて動くコードに修正してください。
また、コードを載せる場合は文字数制限もあるためGithubやCODEPENでアップしてからURLを記載ください。
部活の学習一覧
Lesson 01
「WEBサービスと必要な機能」
Lesson 02
「画面を設計しよう!」
Lesson 03
「テーブルを設計しよう!part1」
Lesson 04
「テーブルを設計しよう!part2」
Lesson 05
「テーブルを設計しよう!part3」
Lesson 06
「DB作成」
Lesson 07
「画面を作ろう!」
Lesson 08
「画面を作ろう!part2」
Lesson 09
「ユーザー登録機能を作ろう!」
Lesson 10
「ユーザー登録機能を作ろう!part2」
コーヒーブレイク
「投資の小話」
Lesson 11
「ログイン機能を作ろう!」
Lesson 12
「ログアウト機能を作ろう!」
Lesson 13
「退会機能を作ろう!」
Lesson 14
「プロフィール編集機能を作ろう!」
コーヒーブレイク
「書いて書いて書きまくれ!」
Lesson 15
「パスワード変更機能を作ろう!」
Lesson 16
「パスワードリマインダー機能を作ろう!」
Lesson 17
「商品登録機能を作ろう!」
Lesson 18
「商品登録機能を作ろう!part2」
Lesson 19
「商品登録機能を作ろう!part3」
Lesson 20
「商品一覧表示機能を作ろう!」
Lesson 21
「商品詳細画面を作ろう!」
Lesson 22
「商品検索機能を作ろう!」
Lesson 23
「連絡掲示板機能を作ろう!」
Lesson 24
「お気に入り機能を作ろう!」
Lesson 25
「マイページ機能を作ろう!」
コーヒーブレイク
「はたらくプログラミング 第5話」
ご意見箱
if(!is_int((int)$currentPageNum)){
error_log('エラー発生:指定ページに不正な値が入りました');
header("Location:index.php"); //トップページへ
}
変数$currentPageNumには、int(1) または string(1) "1"、string(1) "2"みたいな感じで値が格納されることは確認しました。
if文の条件では、まず変数$currentPageNumを(int)で数値型にキャストしています。
その上で、!is_int()を使ってint型(数値型)じゃない場合にif文の中に入ってトップページへ遷移するようになっていると思います。
しかし、int型にキャストしているので、int型じゃない場合はありえないと思います。
なのでこのif文は意味が無いのでは無いかと考えています。
もちろん不正なパラメーターかどうかを判定するのは必要ですが、このif文で不正かどうかを判定する役割をできているのか疑問に思います。
自分の理解が間違っていたらすいません。
回答お願いします。