2019.09.30PHPでURLパラメーターに入力される値を指定する方法を記してます。入力フォームに入力される値が読めないユーザーによって何を入力するか分からないといった理由からです。URLパラメーターの値を指定する上で、意図とはまったく違う値を入力されてしまうことがあるからです。〜/request.php?id=aaaaaaaaaaaaaアヒルンん?どういうこと?うちゅうじん適当なURLパラメーターを入力すると、エラーを招くってこともうちょっと具体的に話します↓URパラメーターが意図しない値で指定される例たとえばテーブルに登録された値が、すでに3つあるとします。任意のレコードを取得・表示するには、詳細画面のURLパラメーターに「?id=1」と入力することで、〜/request.php?id=1「id=1のレコードが表示される」といった仕様を前回記事で作成しました。テーブルのレコード2つ目を表示するときは、「?id=2」と指定すればOKでした。〜/request.php?id=2ユーザーによってURLパラメーターの指定値が変わるしかしユーザーによっては、アヒルン?id=のところに「abc」とか入れたらどうなるんだろう...〜/request.php?id=abcといった想定で、レコードに該当しない値を入力してしまうかもしれません。アヒルンマイナスで登録された値とかあったりして...〜/request.php?id=-10000といったように、全く想定外の入力をすることも考えられます。結果、テーブルのレコードに該当するものがないため、何も表示されない詳細画面面となってしまうんですよね。対策としてPHPでURLパラメーターを指定・先に制限を設けることで、既定された値以外をエラーとして返す必要がありんす。PHPでURLパラメーターを指定するには今回は入力された値が数値であるかの判断を下すために、画面表示処理の前にif文を入れたis_numericの処理を書いていきます。変数が数字または数値形式の文字列であるか、指定した変数が数値であるかどうかを調べます。-is_numeric上記の処理を、詳細画面を表示するPHPファイル側に書きます!今回は例として「numericフォルダ」の中に入力フォームファイル(input.html)データベースと接続するファイル(index.php)詳細画面を表示するファイル(request.php)以上3つのファイルを作成しました。is_numericの処理を書いたのは「request.php」です。PHPでURLパラメーターを指定するサンプルinput.html、index.phpのソースは前回記事と全く同じなので、is_numericの処理を入れたファイルのみ以下に記します。href="index.php">一覧画面へ戻る</a></article></main>これで詳細画面のURLパラメーターに、間違った値が入力されていてもきちんとエラー画面が表示されるはず↓URLパラメーターに値を入力して動作確認ちょっとやってみます。URLパラメーターを「?id=1」と設定するとhttp://localhost:8888/numeric/request.php?id=1id=1のレコード値が表示されます。URLパラメーターを「?id=2」と設定することでhttp://localhost:8888/numeric/request.php?id=2id=2のレコード値が表示されます。数値以外の値を入力してみるとどうでしょうか?http://localhost:8888/numeric/request.php?id=abcエラーの処理が返されてますね!最後にマイナスの数値を入力してみると...http://localhost:8888/numeric/request.php?id=-10こちらもエラーの際の処理が返されてることが確認できました!アヒルンこれならフォームに入力される値が想定外でも大丈夫だね!まとめPHPでURLパラメーターに入力される値を指定する方法でした。指定というよりは、あらかじめis_numericで入力値が数値か確認する処理でしたね。最新情報をお届けします。コメントをキャンセルメールアドレスが公開されることはありません。*サイトホームMySQL運営者情報OYAKUN30代半ば♂妻・子3人の5人で日々激戦中。scriptや色んなプログラミング言語勉強の備忘録、その他Tipsなどを発信してます。運営者情報OYAKUN30代半ば♂妻・子3人の5人で日々激戦中。scriptや色んなプログラミング言語勉強の備忘録、その他Tipsなどを発信してます。"+(parseInt(t.getAttribute("data-start"),10)-1)),e.element.appendChild(a)}});タイトルとURLをコピーしました。