EC-CUBE 2.x

EC-CUBE:SC_FormParamクラスによるパラメーターチェック方法

by TheVOS posted Oct 03, 2019
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

크게 작게 위로 아래로 댓글로 가기 인쇄
Extra Form
원문출처 https://colo-ri.jp/develop/2012/12/ec-cube_sc_formparam.html

EC-CUBE에 대한 인터넷상에서 아직 정보가 많이 부족합니다.

예를 들어 플러그인 작성에 원래 폼을 만들어도 SC_FormParam 클래스 를 사용하여 어떻게 확인하면 좋은 것인지 조사해도 좀처럼 나오지 않습니다.
그래서 내가 독자적으로 조사한 속에서 조금씩 정보 제공 싶다고 생각합니다.

※ : EC-CUBE 버전은 2.12.2의 것을베이스로하고 있습니다.

SC_FormParam의 기본적인 사용법

SC_FormParam 클래스를 사용하려면 확장 지인 SC_FormParam_Ex 클래스를 인스턴스화하고 사용할 수 있습니다. 여기에서 POST 된 데이터를 설정하자.

$ objFormParam = new SC_FormParam_Ex ();
$ objFormParam-> setParam ($ _ POST);

다음 내용의 유효성 검사 규칙을 추가합니다.
여기에서는 예로 이름 (성, 이름)과 이메일 주소를 필수 입력하고 이메일 주소는 제대로 된 형식으로되어있는 것만 받아들이도록하려고합니다.

$ objFormParam-> addParam ( '성' , 'sei' , '' , '' , array ( 'EXIST_CHECK' , 'NO_SPTAB' ));
$objFormParam->addParam('名', 'mei', '', '', array('EXIST_CHECK','NO_SPTAB'));
$objFormParam->addParam('メールアドレス', 'email', '', '', array('EMAIL_CHECK'));

後半に挙げる「オプション」が必要な検証ルールについては、次のようにaddParam()の3番目の引数に設定します。

//姓を3文字以内にしたい場合$objFormParam->addParam('姓, 'sei', 3, '', array('MAX_LENGTH_CHECK'));

そして最後に検証作業。
エラーがあると$arrErr変数にエラーが配列で格納されます。

$arrErr = $objFormParam->checkError();

検証ルールの最後のパラメーターにある配列型の文字のところがポイントなんですけど、ここに様々なルールを追加していくことでいろんな検証ルールを作ることができます。 以下に検証ルール一覧を載せてみたので実際に組み合わせて試してみてください。

$objFormParam->addParam()の4番目の引数は入力値をmb_convert_kana()で変換するための変換オプション文字列を指定します。 変換オプションを指定した場合は、checkError()を実行する前に「$objFormParam->convParam()」を実行する必要があるので注意してください。

SC_FormParam検証ルール一覧

チェック項目 定数名 オプション エラー条件
必須入力の判定 EXIST_CHECK   値の受け取りがない場合エラーを返す
数字の判定 NUM_CHECK   入力文字が数字以外ならエラーを返す
メールアドレス形式の判定 EMAIL_CHECK   メールアドレス形式でないならエラーを返す
メールアドレスに使用できる文字の判定 EMAIL_CHAR_CHECK   メールアドレスに使用できない文字が含まれていたらエラーを返す
携帯メールアドレスの判定 MOBILE_EMAIL_CHECK   SC_Helper_Mobile_Ex::gfIsMobileMailAddress()による判定結果でエラーを返す
英字の判定 ALPHA_CHECK   入力文字が半角英字以外ならエラーを返す
英数字の判定 ALNUM_CHECK   入力文字が英数字以外ならエラーを返す
英数記号の判定 GRAPH_CHECK   入力文字が英数記号以外ならエラーを返す
カタカナの判定 KANA_CHECK   入力文字がカナ以外ならエラーを返す
カタカナの判定2 KANABLANK_CHECK   入力文字がカナ以外ならエラーを返す (タブ、スペースは許可する)
URL形式の判定 URL_CHECK   URLを正規表現で判定する。デフォルトでhttp://があってもOK
IPアドレスの判定 IP_CHECK   IPアドレスでない場合エラーを返す。改行コードが含まれている場合には配列に変換
ドメインチェック DOMAIN_CHECK   ドメインの形式が正しくなければエラーを返す
スペース、タブのみの判定 SPTAB_CHECK   スペース、タブ、改行のみの入力の場合エラーを返す
スペース、タブの判定 NO_SPTAB   入力文字がスペース、タブ、改行を含んでいたらエラーを返す
数字(非ゼロ)の判定 ZERO_CHECK   数値入力値で0が入力された場合エラーを返す
ゼロで開始されている数値の判定 ZERO_START   0で始まる数値が入力されていたらエラーを返す
ファイルの存在チェック FILE_EXISTS   入力パスのファイルが見つからなければエラーを返す
ディレクトリ内のファイル存在チェック FIND_FILE ディレクトリ 指定ディレクトリ内に入力パスのファイルが見つからなければエラーを返す(デフォルトでIMAGE_SAVE_REALDIR)
ディレクトリ存在チェック DIR_CHECK   입력 된 경로 문자의 디렉토리가 없으면 오류를 반환
파일 이름의 판정 FILE_NAME_CHECK   입력 문자가 숫자, '_', '-'이외라면 오류를 반환
파일 이름의 판정 (업로드 이외의 경우) FILE_NAME_CHECK_BY_NOUPLOAD   입력 문자가 숫자, '_', '-'이외라면 오류를 반환
최대 문자 제한의 판정 MAX_LENGTH_CHECK 최대 길이 입력이 지정 문자보다 크면 오류를 반환
최소 길이 제한의 판정 MIN_LENGTH_CHECK 최소 길이 입력이 지정 문자 미만이면 오류를 반환
자리수의 판정 NUM_COUNT_CHECK 자리수 입력 문자의 수를 지정하게 자릿수 않으면 오류를 반환
필수 선택 판정 SELECT_CHECK   풀다운 등으로 선택되어 있지 않으면 오류를 반환
소문자로 변환 CHANGE_LOWER   입력 문자를 소문자로 변환
다운로드 파일의 존재 확인 DOWN_FILE_EXISTS   DOWN_SAVE_REALDIR에 입력 경로의 파일이 없으면 오류를 반환

도움이 되었으면 좋겠습니다.

Facebook [ko]댓글