3
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

MoodleのGET/POSTパラメータ取得

Last updated at Posted at 2017-06-10

Moodleのリクエスト変数用関数

MoodleではGET/POSTされた変数に直接アクセスしないように決められている。
https://docs.moodle.org/dev/Security#Don.27t_trust_any_input_from_users
そのためmoodleforms以外で利用する場合はrequired_param()/optional_param()を利用する必要があるが、どのようなオプションが利用が出来るかは公式に記載が見つからないので以下にまとめる。

メモ

以下の内容はMoodle 3.2.3のソースを見て纏めたもの。

関数とパラメータの種類

required_param($parname, $type)

指定した$parnameの変数名のGET/POST値を取得する。存在しない(undefined)場合はエラーとなるため、処理の続行に必須の変数名を指定するときに使用する。
Moodle 2.2以降から取得した値がarray()型だった場合はエラーとなるはずだが実際にはrequired_param_array()を呼び出して処理続行となっている…

required_param_array($parname, $type)

required_param()のarray()版。array()型ではない場合はエラーとなる。

optional_param($parname, $default, $type)

required_param()と異なり、指定した$parnameがない場合は$defaultが利用される。
Moodle 2.2以降から取得した値がarray()型だった場合はエラーとなるはずだが実際にはoptional_param_array()を呼び出して処理続行となっている…

optional_param_array($parname, $default, $type)

optional_param()のarray()版。

$typeパラメータ

上記の全ての関数で共通して以下の$typeパラメータに対応する。許可するとある場合、許可されない時は返り値は空文字となる。
英字とある場合は大文字/小文字のアルファベット([a-zA-Z])*、英数字とある場合は英字と数字([a-zA-Z0-9])とする。

$type 内容
PARAM_RAW 特になにもしない
PARAM_RAW_TRIMMED trim()により前後のスペース、改行等を取り除く
PARAM_CLEAN HTMLPurifierで処理する。とりあえずコレ使っとけ的な奴?
PARAM_CLEANHTML HTMLPurifierで処理したあとtrim()する
PARAM_INT intにキャストする
PARAM_FLOAT floatにキャストする
PARAM_ALPHA 英字以外を取り除く
PARAM_ALPHAEXT 英字、_-以外を取り除く
PARAM_ALPHANUM 英数字以外を取り除く
PARAM_ALPHANUMEXT 英数字、_-以外を取り除く
PARAM_SEQUENCE 数字以外を取り除く
PARAM_BOOL on/yes/true/!empty($parname)を1に、off/no/false/empty($parname)を0にして返す
PARAM_NOTAGS striptags()でタグを除去する
PARAM_TEXT multilang filter用以外のタグを除去する
PARAM_COMPONENT Moodle用プラグインの命名ルールに則っているもののみ許可する。この部分の記述でmod_alpha_betaのようにアンダースコアが2つ以上ある活動モジュール名が許されていないことが分かる。
PARAM_PLUGIN, PARAM_AREA プラグインの命名ルールに則っているもののみ許可する。PARAM_COMPONENTと異なり活動モジュール名の変則ルールに対応していない
PARAM_SAFEDIR PARAM_ALPHANUMEXTと同じく英数字と_-以外を取り除く
PARAM_SAFEPATH PARAM_SAFEDIRに加え/以外を取り除く
PARAM_FILE ファイル名として怪しい文字を取り除く
PARAM_PATH /で区切られた文字列からディレクトリ名やファイル名として怪しい文字を取り除く
PARAM_HOST ホスト名またはIPv4アドレスのみ許可する
PARAM_URL (スキーマを含めて)URLが有効なフォーマットの場合のみ許可する
PARAM_LOCALURL サイト内URLとして有効なフォーマットの場合のみ許可する
PARAM_PEM 有効なBASE64フォーマットのPEMファイルの場合のみ許可する
PARAM_BASE64 有効なBASE64フォーマットの場合のみ許可する
PARAM_TAG 制御文字等を取り除き、連続する半角スペースを1つに置換する。HTMLタグが残るので出力時にサニタイズする必要がある
PARAM_TAGLIST ,で区切られたHTMLタグのリストから不正なものを取り除く
PARAM_CAPABILITY MoodleのCapabilityとして有効な場合のみ許可する
PARAM_PERMISSION CAP_INHERITCAP_ALLOWCAP_PREVENTCAP_PROHIBITのリスト中にあるかチェックする。リストに無い場合はCAP_INHERITを返す
PARAM_AUTH 導入済み認証プラグインの場合のみ許可する
PARAM_LANG 導入済み言語パックの場合のみ許可する
PARAM_THEME 導入済みテーマの場合のみ許可する
PARAM_USERNAME ユーザ名のルールに則っているもののみ許可する。実在の有無はチェックしない
PARAM_EMAIL e-mailアドレスとして有効なフォーマットの場合のみ許可する
PARAM_STRINGID 英字で始まり、英数字、\.:/_-を含む文字列のみ許可する
PARAM_TIMEZONE タイムゾーンとして有効なフォーマット(+9.0Asia/Tokyo)のみ許可する
3
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?