質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

2回答

1083閲覧

PHPにて、パラメータに不正な値が入力された場合に、パラメータの値を書き換えたい。

minyouyuu

総合スコア39

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2019/07/26 13:39

PHP

1$current = 1; 2$p=filter_input(INPUT_GET,"p",FILTER_VALIDATE_INT,["options"=>["min_range"=>1]]); 3if($p){ 4 $current = $p; 5}

PHPにて、ページネーションを作成しました。(※ページネーションについての質問ではないので、ページネーション部分のコードは載せておりません)http://hoge/?p=2のようにすると、2ページ目に遷移します。

上記のコードは、パラメータpに不正な値が入力されたときの処理です。pは正の整数のみを受け付けます。不正な値が入力された場合は、$pの値を1にして、後続の処理で1ページ目へと遷移するようにしており、問題なく動作しています。

しかし、現在、http://hoge/?p=aaaなどと不正な値が入力された場合、p=aaaとなっているのに、1ページ目が表示されている状態です。パラメータの値と実際に表示されているページが異なっているところに違和感を感じています。

このように不正な値が入力された場合は、パラメータの値もp=1に書き換えた上で、1ページ目へ遷移するようにしたいです。pの値を書き換える方法は何かあるでしょうか?

それとも、パラメータの値と表示されているページ数が異なるというのは、許容されるものなのでしょうか?パラメータに不正な値が入力された場合に1ページ目へ飛ばすというエラー処理は問題なく動作しているので、特にpの値を書き換える処理はなくてもよいでしょうか?

お手数ですが、ご教授のほど、よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

このように不正な値が入力された場合は、パラメータの値もp=1に書き換えた上で、1ページ目へ遷移するようにしたいです。pの値を書き換える方法は何かあるでしょうか?

/?p=1にリダイレクトさせましょう。

投稿2019/07/26 13:50

編集2019/07/26 13:51
maisumakun

総合スコア145184

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

minyouyuu

2019/07/26 22:19

リダイレクトですか...少し勉強したことがあるような気がしますが、調べてみます!ありがとうございました。
guest

0

ベストアンサー

パラメータを書き換えるのはあまりよろしいことではないです。
チェックして初期値設定するだけで良いかと思います。

php

1$current = filter_input(INPUT_GET,"p",FILTER_VALIDATE_INT,["options"=>["min_range"=>1]]) ?? 1;

NULL合体演算子

パラメータとはいってもあくまで内部処理に使うだけですし、
不正なパラメータをわざわざURLから書き換えるのも「そこまでやるべきか」というところになります。
不正なパラメータをそのまま使わないようにするだけで十分にも思います。

投稿2019/07/26 14:15

m.ts10806

総合スコア80850

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

minyouyuu

2019/07/26 22:55 編集

なるほど、やはりパラメータを書き換えるところまでは実装しなくてよく、不正な値が使われなけばOKとするのですね。ありがとうございました!NULL合体演算子も知らなかったです。便利そうですね!使ってみます。
m.ts10806

2019/07/27 00:31

不正な値は勝手に弾かれるわけではないので、そういう実装にする必要があります。 ホワイトリスト、ブラックリストを覚えると良いです。(どちらが望ましいかは要件や状況次第)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問