source: branches/feature-module-update/data/class/SC_CheckError.php @ 15346

Revision 15346, 33.6 KB checked in by nanasess, 17 years ago (diff)

未定義変数の修正

  • Property svn:keywords set to Id
  • Property svn:mime-type set to application/x-httpd-php; charset=UTF-8
Line 
1<?php
2/*
3 * Copyright(c) 2000-2007 LOCKON CO.,LTD. All Rights Reserved.
4 *
5 * http://www.lockon.co.jp/
6 */
7
8/*----------------------------------------------------------------------
9 * [名称] SC_CheckError
10 * [概要] エラーチェッククラス
11 *----------------------------------------------------------------------
12 */
13class SC_CheckError {
14    var $arrErr;
15    var $arrParam;
16   
17    // チェック対象の値が含まれる配列をセットする。
18    function SC_CheckError($array = "") {
19        if($array != "") {
20            $this->arrParam = $array;
21        } else {
22            $this->arrParam = $_POST;
23        }
24
25    }
26   
27    function doFunc($value, $arrFunc) {
28        foreach ( $arrFunc as $key ) {
29            $this->$key($value);
30        }
31    }
32   
33    /* HTMLのタグをチェックする */
34    // value[0] = 項目名 value[1] = 判定対象 value[2] = 許可するタグが格納された配列
35    function HTML_TAG_CHECK($value) {
36        if(isset($this->arrErr[$value[1]])) {
37            return;
38        }
39       
40        // 含まれているタグを抽出する
41        preg_match_all("/<([\/]?[a-z]+)/", $this->arrParam[$value[1]], $arrTag);
42
43        foreach($arrTag[1] as $val) {
44            $find = false;
45           
46            foreach($value[2] as $tag) {
47                if(eregi("^" . $tag . "$", $val)) {
48                    $find = true;
49                } else {
50                }
51            }
52           
53            if(!$find) {
54                $this->arrErr[$value[1]] = "※ " . $value[0] . "に許可されていないタグ[" . strtoupper($val) . "]が含まれています。<br />";
55                return;
56            }       
57        }       
58    }
59
60    /* 必須入力の判定 */
61    // value[0] = 項目名 value[1] = 判定対象
62    function EXIST_CHECK( $value ) {            // 受け取りがない場合エラーを返す
63        if(isset($this->arrErr[$value[1]])) {
64            return;
65        }
66        if( strlen($this->arrParam[$value[1]]) == 0 ){                 
67            $this->arrErr[$value[1]] = "※ " . $value[0] . "が入力されていません。<br />";
68        }
69    }
70   
71    /* スペース、タブの判定 */
72    // value[0] = 項目名 value[1] = 判定対象
73    function SPTAB_CHECK( $value ) {            // 受け取りがない場合エラーを返す
74        if(isset($this->arrErr[$value[1]])) {
75            return;
76        }
77        if (!isset($this->arrParam[$value[1]])) $this->arrParam[$value[1]] = "";
78        if(strlen($this->arrParam[$value[1]]) != 0 && ereg("^[  \t\r\n]+$", $this->arrParam[$value[1]])){                       
79            $this->arrErr[$value[1]] = "※ " . $value[0] . "にスペース、タブ、改行のみの入力はできません。<br />";
80        }
81    }
82   
83    /* スペース、タブの判定 */
84    // value[0] = 項目名 value[1] = 判定対象
85    function NO_SPTAB( $value ) {           // 受け取りがない場合エラーを返す
86        if(isset($this->arrErr[$value[1]])) {
87            return;
88        }
89        if (!isset($this->arrParam[$value[1]])) $this->arrParam[$value[1]] = "";
90        if(strlen($this->arrParam[$value[1]]) != 0 && mb_ereg("[  \t\r\n]+", $this->arrParam[$value[1]])){                     
91            $this->arrErr[$value[1]] = "※ " . $value[0] . "にスペース、タブ、改行は含めないで下さい。<br />";
92        }
93    }
94   
95    /* ゼロで開始されている数値の判定 */
96    function ZERO_START($value) {
97        if(isset($this->arrErr[$value[1]])) {
98            return;
99        }
100        if (!isset($this->arrParam[$value[1]])) $this->arrParam[$value[1]] = "";
101        if(strlen($this->arrParam[$value[1]]) != 0 && ereg("^[0]+[0-9]+$", $this->arrParam[$value[1]])){                       
102            $this->arrErr[$value[1]] = "※ " . $value[0] . "に0で始まる数値が入力されています。<br />";
103        }
104    }
105   
106    /* 必須選択の判定 */
107    // value[0] = 項目名 value[1] = 判定対象
108    function SELECT_CHECK( $value ) {           // プルダウンなどで選択されていない場合エラーを返す
109        if(isset($this->arrErr[$value[1]])) {
110            return;
111        }
112        if (!isset($this->arrParam[$value[1]])) $this->arrParam[$value[1]] = "";
113        if( strlen($this->arrParam[$value[1]]) == 0 ){                     
114            $this->arrErr[$value[1]] = "※ " . $value[0] . "が選択されていません。<br />";
115        }
116    }
117
118    /* 同一性の判定 */
119    // value[0] = 項目名1 value[1] = 項目名2 value[2] = 判定対象文字列1  value[3] = 判定対象文字列2
120    function EQUAL_CHECK( $value ) {        // 入力が指定文字数以上ならエラーを返す
121        if(isset($this->arrErr[$value[2]]) || isset($this->arrErr[$value[3]])) {
122            return;
123        }
124        if (!isset($this->arrParam[$value[1]])) $this->arrParam[$value[1]] = "";
125        // 文字数の取得           
126        if( $this->arrParam[$value[2]] != $this->arrParam[$value[3]]) {
127            $this->arrErr[$value[2]] = "※ " . $value[0] . "と" . $value[1] . "が一致しません。<br />";
128        }
129    }
130   
131    /* 値が異なることの判定 */
132    // value[0] = 項目名1 value[1] = 項目名2 value[2] = 判定対象文字列1  value[3] = 判定対象文字列2
133    function DIFFERENT_CHECK( $value ) {        // 入力が指定文字数以上ならエラーを返す
134        if(isset($this->arrErr[$value[2]]) || isset($this->arrErr[$value[3]])) {
135            return;
136        }
137        if (!isset($this->arrParam[$value[1]])) $this->arrParam[$value[1]] = "";
138        // 文字数の取得           
139        if( $this->arrParam[$value[2]] == $this->arrParam[$value[3]]) {
140            $this->arrErr[$value[2]] = "※ " . $value[0] . "と" . $value[1] . "は、同じ値を使用できません。<br />";
141        }
142    }
143   
144    /* 値の大きさを比較する value[2] < value[3]でなければエラー */
145    // value[0] = 項目名1 value[1] = 項目名2 value[2] = 判定対象文字列1  value[3] = 判定対象文字列2
146    function GREATER_CHECK($value) {        // 入力が指定文字数以上ならエラーを返す
147        if(isset($this->arrErr[$value[2]]) || isset($this->arrErr[$value[3]])) {
148            return;
149        }
150        if (!isset($this->arrParam[$value[1]])) $this->arrParam[$value[1]] = "";
151        // 文字数の取得           
152        if($this->arrParam[$value[2]] != "" && $this->arrParam[$value[3]] != "" && ($this->arrParam[$value[2]] > $this->arrParam[$value[3]])) {
153            $this->arrErr[$value[2]] = "※ " . $value[0] . "は" . $value[1] . "より大きい値を入力できません。<br />";
154        }
155    }
156   
157   
158    /* 最大文字数制限の判定 */
159    // value[0] = 項目名 value[1] = 判定対象文字列  value[2] = 最大文字数(半角も全角も1文字として数える)
160    function MAX_LENGTH_CHECK( $value ) {       // 入力が指定文字数以上ならエラーを返す
161        if(isset($this->arrErr[$value[1]])) {
162            return;
163        }
164        if (!isset($this->arrParam[$value[1]])) $this->arrParam[$value[1]] = "";
165        // 文字数の取得           
166        if( mb_strlen($this->arrParam[$value[1]]) > $value[2] ) {
167            $this->arrErr[$value[1]] = "※ " . $value[0] . "は" . $value[2] . "字以下で入力してください。<br />";
168        }
169    }
170   
171    /* 最小文字数制限の判定 */
172    // value[0] = 項目名 value[1] = 判定対象文字列 value[2] = 最小文字数(半角も全角も1文字として数える)
173    function MIN_LENGTH_CHECK( $value ) {       // 入力が指定文字数未満ならエラーを返す
174        if(isset($this->arrErr[$value[1]])) {
175            return;
176        }                                       
177        if (!isset($this->arrParam[$value[1]])) $this->arrParam[$value[1]] = "";
178        // 文字数の取得       
179        if( mb_strlen($this->arrParam[$value[1]]) < $value[2] ) {
180            $this->arrErr[$value[1]] = "※ " . $value[0] . "は" . $value[2] . "字以上で入力してください。<br />";
181        }
182    }
183   
184    /* 最大文字数制限の判定 */
185    // value[0] = 項目名 value[1] = 判定対象文字列  value[2] = 最大数
186    function MAX_CHECK( $value ) {      // 入力が最大数以上ならエラーを返す
187        if(isset($this->arrErr[$value[1]])) {
188            return;
189        }
190        if (!isset($this->arrParam[$value[1]])) $this->arrParam[$value[1]] = "";
191        // 文字数の取得           
192        if($this->arrParam[$value[1]] > $value[2] ) {
193            $this->arrErr[$value[1]] = "※ " . $value[0] . "は" . $value[2] . "以下で入力してください。<br />";
194        }
195    }
196   
197    /* 最小数値制限の判定 */
198    // value[0] = 項目名 value[1] = 判定対象文字列  value[2] = 最小数
199    function MIN_CHECK( $value ) {      // 入力が最小数未満ならエラーを返す
200        if(isset($this->arrErr[$value[1]])) {
201            return;
202        }
203        if (!isset($this->arrParam[$value[1]])) $this->arrParam[$value[1]] = "";
204        if($this->arrParam[$value[1]] < $value[2] ) {
205            $this->arrErr[$value[1]] = "※ " . $value[0] . "は" . $value[2] . "以上で入力してください。<br />";
206        }
207    }
208   
209       
210    /* 数字の判定 */
211    // value[0] = 項目名 value[1] = 判定対象文字列
212    function NUM_CHECK( $value ) {              // 入力文字が数字以外ならエラーを返す
213        if(isset($this->arrErr[$value[1]])) {
214            return;
215        }
216        if (!isset($this->arrParam[$value[1]])) $this->arrParam[$value[1]] = "";
217        if( strlen($this->arrParam[$value[1]]) > 0 && !EregI("^[[:digit:]]+$", $this->arrParam[$value[1]])) {
218            $this->arrErr[$value[1]] = "※ " . $value[0] . "は数字で入力してください。<br />";   
219        }
220    }
221   
222        /* 小数点を含む数字の判定 */
223    // value[0] = 項目名 value[1] = 判定対象文字列
224    function NUM_POINT_CHECK( $value ) {                // 入力文字が数字以外ならエラーを返す
225        if(isset($this->arrErr[$value[1]])) {
226            return;
227        }
228        if (!isset($this->arrParam[$value[1]])) $this->arrParam[$value[1]] = "";
229        if( strlen($this->arrParam[$value[1]]) > 0 && !EregI("^[[:digit:]]+[\.]?[[:digit:]]+$", $this->arrParam[$value[1]])) {
230            $this->arrErr[$value[1]] = "※ " . $value[0] . "は数字で入力してください。<br />";   
231        }
232    }
233       
234    function ALPHA_CHECK($value) {
235        if(isset($this->arrErr[$value[1]])) {
236            return;
237        }
238        if (!isset($this->arrParam[$value[1]])) $this->arrParam[$value[1]] = "";
239        if( strlen($this->arrParam[$value[1]]) > 0 && !EregI("^[[:alpha:]]+$", $this->arrParam[$value[1]])) {
240            $this->arrErr[$value[1]] = "※ " . $value[0] . "は半角英字で入力してください。<br />"; 
241        }
242    }
243   
244    /* 電話番号の判定 (数字チェックと文字数チェックを実施する。)
245        value[0] : 項目名
246        value[1] : 電番1項目目
247        value[2] : 電番2項目目
248        value[3] : 電番3項目目
249        value[4] : 文字数制限
250    */
251    function TEL_CHECK($value) {
252        if(isset($this->arrErr[$value[1]])) {
253            return;
254        }
255       
256        $cnt = 0;
257       
258        for($i = 1; $i <= 3; $i++) {
259            if(strlen($this->arrParam[$value[$i]]) > 0) {
260                $cnt++;
261            }
262        }
263       
264        // すべての項目が満たされていない場合を判定(一部だけ入力されている状態)
265        if($cnt > 0 && $cnt < 3) {
266            $this->arrErr[$value[1]] .= "※ " . $value[0] . "はすべての項目を入力してください。<br />";
267        }
268                   
269        for($i = 1; $i <= 3; $i++) {
270            if(strlen($this->arrParam[$value[$i]]) > 0 && strlen($this->arrParam[$value[$i]]) > $value[4]) {
271                $this->arrErr[$value[$i]] .= "※ " . $value[0] . $i . "は" . $value[4] . "字以内で入力してください。<br />";
272            } else if (strlen($this->arrParam[$value[$i]]) > 0 && !EregI("^[[:digit:]]+$", $this->arrParam[$value[$i]])) {
273                $this->arrErr[$value[$i]] .= "※ " . $value[0] . $i . "は数字で入力してください。<br />";
274            }
275        }
276    }
277   
278    /* 関連項目が完全に満たされているか判定
279        value[0]        : 項目名
280        value[1]        : 判定対象要素名
281    */
282    function FULL_EXIST_CHECK($value) {
283        $max = count($value);
284           
285        // 既に該当項目にエラーがある場合は、判定しない。
286        for($i = 1; $i < $max; $i++) {
287            if(isset($this->arrErr[$value[$i]])) {
288                return;
289            }
290        }
291       
292        $blank = false;
293       
294        // すべての項目がブランクでないか、すべての項目が入力されていない場合はエラーとする。
295        for($i = 1; $i < $max; $i++) {
296            if(strlen($this->arrParam[$value[$i]]) <= 0) {
297                $blank = true;
298            }
299        }
300       
301        if($blank) {
302            $this->arrErr[$value[1]] = "※ " . $value[0] . "が入力されていません。<br />";
303        }
304    }
305       
306    /* 関連項目がすべて満たされているか判定
307        value[0]        : 項目名
308        value[1]        : 判定対象要素名
309    */
310    function ALL_EXIST_CHECK($value) {
311        $max = count($value);
312           
313        // 既に該当項目にエラーがある場合は、判定しない。
314        for($i = 1; $i < $max; $i++) {
315            if(isset($this->arrErr[$value[$i]])) {
316                return;
317            }
318        }
319       
320        $blank = false;
321        $input = false;
322       
323        // すべての項目がブランクでないか、すべての項目が入力されていない場合はエラーとする。
324        for($i = 1; $i < $max; $i++) {
325            if(strlen($this->arrParam[$value[$i]]) <= 0) {
326                $blank = true;
327            } else {
328                $input = true;
329            }
330        }
331       
332        if($blank && $input) {
333            $this->arrErr[$value[1]] = "※ " . $value[0] . "はすべての項目を入力して下さい。<br />";
334        }
335    }
336   
337        /* 関連項目がどれか一つ満たされているか判定
338        value[0]        : 項目名
339        value[1]        : 判定対象要素名
340    */
341    function ONE_EXIST_CHECK($value) {
342        $max = count($value);
343           
344        // 既に該当項目にエラーがある場合は、判定しない。
345        for($i = 1; $i < $max; $i++) {
346            if(isset($this->arrErr[$value[$i]])) {
347                return;
348            }
349        }
350       
351        $input = false;
352       
353        // すべての項目がブランクでないか、すべての項目が入力されていない場合はエラーとする。
354        for($i = 1; $i < $max; $i++) {
355            if(strlen($this->arrParam[$value[$i]]) > 0) {
356                $input = true;
357            }
358        }
359       
360        if(!$input) {
361            $this->arrErr[$value[1]] = "※ " . $value[0] . "が入力されていません。<br />";
362        }
363    }
364   
365    /* 上位の項目が満たされているか判定
366        value[0]        : 項目名
367        value[1]        : 判定対象要素名
368    */
369    function TOP_EXIST_CHECK($value) {
370        $max = count($value);
371           
372        // 既に該当項目にエラーがある場合は、判定しない。
373        for($i = 1; $i < $max; $i++) {
374            if(isset($this->arrErr[$value[$i]])) {
375                return;
376            }
377        }
378       
379        $blank = false;
380        $error = false;
381               
382        // すべての項目がブランクでないか、すべての項目が入力されていない場合はエラーとする。
383        for($i = 1; $i < $max; $i++) {
384            if(strlen($this->arrParam[$value[$i]]) <= 0) {
385                $blank = true;
386            } else {
387                if($blank) {
388                    $error = true;
389                }
390            }
391        }
392       
393        if($error) {
394            $this->arrErr[$value[1]] = "※ " . $value[0] . "は先頭の項目から順番に入力して下さい。<br />";
395        }
396    }
397   
398   
399    /* カタカナの判定 */
400    // value[0] = 項目名 value[1] = 判定対象文字列
401    function KANA_CHECK( $value ) {             // 入力文字がカナ以外ならエラーを返す
402        if(isset($this->arrErr[$value[1]])) {
403            return;
404        }
405        if(strlen($this->arrParam[$value[1]]) > 0 && ! mb_ereg("^[ァ-ヶヲ-゚ー]+$", $this->arrParam[$value[1]])) {
406            $this->arrErr[$value[1]] = "※ " . $value[0] . "はカタカナで入力してください。<br />"; 
407        }
408    }
409   
410    /* カタカナの判定2(タブ、スペースは許可する) */
411    // value[0] = 項目名 value[1] = 判定対象文字列
412    function KANABLANK_CHECK( $value ) {                // 入力文字がカナ以外ならエラーを返す
413        if(isset($this->arrErr[$value[1]])) {
414            return;
415        }
416        if(strlen($this->arrParam[$value[1]]) > 0 && ! mb_ereg("^([  \t\r\n]|[ァ-ヶ]|[ー])+$", $this->arrParam[$value[1]])) {
417            $this->arrErr[$value[1]] = "※ " . $value[0] . "はカタカナで入力してください。<br />"; 
418        }
419    }
420
421    /* 英数字の判定 */
422    // value[0] = 項目名 value[1] = 判定対象文字列
423    function ALNUM_CHECK( $value ) {                // 入力文字が英数字以外ならエラーを返す
424        if(isset($this->arrErr[$value[1]])) {
425            return;
426        }                                       
427        if( strlen($this->arrParam[$value[1]]) > 0 && ! EregI("^[[:alnum:]]+$", $this->arrParam[$value[1]] ) ) {
428            $this->arrErr[$value[1]] = "※ " . $value[0] . "は英数字で入力してください。<br />";   
429        }
430    }
431
432    /* 必須選択の判定 */
433    // value[0] = 項目名 value[1] = 判定対象
434    function ZERO_CHECK( $value ) {             // 入力値で0が許されない場合エラーを返す
435       
436        if($this->arrParam[$value[1]] == "0" ){                     
437            $this->arrErr[$value[1]] = "※ " . $value[0] . "は1以上を入力してください。<br />";
438        }
439    }
440
441    /* 桁数の判定 (最小最大)*/
442    // value[0] = 項目名 value[1] = 判定対象文字列 value[2] = 最小桁数 value[3] = 最大桁数
443    function NUM_RANGE_CHECK( $value ) {        // 入力文字の桁数判定 → 最小桁数<入力文字列<最大桁数
444        if(isset($this->arrErr[$value[1]])) {
445            return;
446        }                                       
447        // $this->arrParam[$value[0]] = mb_convert_kana($this->arrParam[$value[0]], "n");                                       
448        $count = strlen($this->arrParam[$value[1]]);
449        if( ( $count > 0 ) && $value[2] > $count || $value[3] < $count ) { 
450            $this->arrErr[$value[1]] =  "※ $value[0]は$value[2]桁〜$value[3]桁で入力して下さい。<br />";
451        }
452    }
453
454    /* 桁数の判定 */
455    // value[0] = 項目名 value[1] = 判定対象文字列 value[2] = 桁数
456    function NUM_COUNT_CHECK( $value ) {        // 入力文字の桁数判定 → 入力文字列 = 桁数 以外はNGの場合
457        if(isset($this->arrErr[$value[1]])) {
458            return;
459        }
460        $count = strlen($this->arrParam[$value[1]]);
461        if(($count > 0) && $count != $value[2] ) { 
462            $this->arrErr[$value[1]] =  "※ $value[0]は$value[2]桁で入力して下さい。<br />";
463        }
464    }               
465   
466    /* メールアドレス形式の判定 */
467    // value[0] = 項目名 value[1] = 判定対象メールアドレス
468    function EMAIL_CHECK( $value ){             // メールアドレスを正規表現で判定する
469        if(isset($this->arrErr[$value[1]])) {
470            return;
471        }
472        if(strlen($this->arrParam[$value[1]]) > 0 && !ereg("^[^@]+@[^.]+\..+", $this->arrParam[$value[1]])) {
473            $this->arrErr[$value[1]] = "※ " . $value[0] . "の形式が不正です。<br />";
474        }
475    }       
476       
477    /* メールアドレスに使用できる文字の判定 */
478    //  value[0] = 項目名 value[1] = 判定対象メールアドレス
479    function EMAIL_CHAR_CHECK( $value ){                // メールアドレスに使用する文字を正規表現で判定する
480        if(isset($this->arrErr[$value[1]])) {
481            return;
482        }
483        if(strlen($this->arrParam[$value[1]]) > 0 && !ereg("^[a-zA-Z0-9_\.@\+\?-]+$",$this->arrParam[$value[1]]) ) {
484            $this->arrErr[$value[1]] = "※ " . $value[0] . "に使用する文字を正しく入力してください。<br />";
485        }
486    }       
487   
488    /* URL形式の判定 */
489    //  value[0] = 項目名 value[1] = 判定対象URL
490    function URL_CHECK( $value ){               // URLを正規表現で判定する。デフォルトでhttp://があってもOK
491        if(isset($this->arrErr[$value[1]])) {
492            return;
493        }                                       
494        if( strlen($this->arrParam[$value[1]]) > 0 && !ereg( "^https?://+($|[a-zA-Z0-9_~=&\?\.\/-])+$", $this->arrParam[$value[1]] ) ) {
495            $this->arrErr[$value[1]] = "※ " . $value[0] . "を正しく入力してください。<br />";     
496        }
497    }
498       
499    /* 拡張子の判定 */
500    // value[0] = 項目名 value[1] = 判定対象 value[2]=array(拡張子)   
501    function FILE_EXT_CHECK( $value ) {         // 受け取りがない場合エラーを返す
502        if(isset($this->arrErr[$value[1]]) || count($value[2]) == 0) {
503            return;
504        }
505       
506        if($_FILES[$value[1]]['name'] != "" ) {                                     
507            $errFlag = 1;
508            $array_ext = explode(".", $_FILES[$value[1]]['name']);
509            $ext = $array_ext[ count ( $array_ext ) - 1 ];
510            $ext = strtolower($ext);
511           
512            $strExt = "";
513           
514            foreach ( $value[2] as $checkExt ){
515                if ( $ext == $checkExt) {
516                    $errFlag = 0;
517                }
518               
519                if($strExt == "") {
520                    $strExt.= $checkExt;
521                } else {
522                    $strExt.= "・$checkExt";
523                }
524            }
525        }
526        if ($errFlag == 1) {
527            $this->arrErr[$value[1]] = "※ " . $value[0] . "で許可されている形式は、" . $strExt . "です。<br />";
528        }
529    }
530   
531    /* ファイルが存在するかチェックする */
532    // value[0] = 項目名 value[1] = 判定対象  value[2] = 指定ディレクトリ
533    function FIND_FILE( $value ) {          // 受け取りがない場合エラーを返す
534        if(isset($this->arrErr[$value[1]])) {
535            return;
536        }
537       
538        if($value[2] != "") {
539            $dir = $value[2];
540        } else {
541            $dir = IMAGE_SAVE_DIR;
542        }
543       
544        $path = $dir . "/" . $this->arrParam[$value[1]];
545        $path = ereg_replace("//", "/", $path);
546               
547        if($this->arrParam[$value[1]] != "" && !file_exists($path)){
548            $this->arrErr[$value[1]] = "※ " . $path . "が見つかりません。<br />";
549        }
550    }
551   
552    /* ファイルが上げられたか確認 */
553    // value[0] = 項目名 value[1] = 判定対象  value[2] = 指定サイズ(KB)
554    function FILE_EXIST_CHECK( $value ) {           // 受け取りがない場合エラーを返す
555        if(isset($this->arrErr[$value[1]])) {
556            return;
557        }                                           
558        if(!($_FILES[$value[1]]['size'] != "" && $_FILES[$value[1]]['size'] > 0)){
559            $this->arrErr[$value[1]] = "※ " . $value[0] . "をアップロードして下さい。<br />";
560        }
561    }
562   
563    /* ファイルサイズの判定 */
564    // value[0] = 項目名 value[1] = 判定対象  value[2] = 指定サイズ(KB)
565    function FILE_SIZE_CHECK( $value ) {            // 受け取りがない場合エラーを返す
566        if(isset($this->arrErr[$value[1]])) {
567            return;
568        }                                           
569        if( $_FILES[$value[1]]['size'] > $value[2] *  1024 ){
570            $byte = "KB";
571            if( $value[2] >= 1000 ) {
572                $value[2] = $value[2] / 1000;
573                $byte = "MB";
574            }
575            $this->arrErr[$value[1]] = "※ " . $value[0] . "のファイルサイズは" . $value[2] . $byte . "以下のものを使用してください。<br />";
576        }
577    }
578
579    /* ファイル名の判定 */
580    // value[0] = 項目名 value[1] = 判定対象文字列
581    function FILE_NAME_CHECK( $value ) {                // 入力文字が英数字,"_","-"以外ならエラーを返す
582        if(isset($this->arrErr[$value[1]])) {
583            return;
584        }
585        if( strlen($_FILES[$value[1]]['name']) > 0 && ! EregI("^[[:alnum:]_\.-]+$", $_FILES[$value[1]]['name']) ) {
586            $this->arrErr[$value[1]] = "※ " . $value[0] . "のファイル名に日本語やスペースは使用しないで下さい。<br />";   
587        }
588    }
589
590    /* ファイル名の判定(アップロード以外の時) */
591    // value[0] = 項目名 value[1] = 判定対象文字列
592    function FILE_NAME_CHECK_BY_NOUPLOAD( $value ) {            // 入力文字が英数字,"_","-"以外ならエラーを返す
593        if(isset($this->arrErr[$value[1]])) {
594            return;
595        }
596   
597        if( strlen($this->arrParam[$value[1]]) > 0 && ! EregI("^[[:alnum:]_\.-]+$", $this->arrParam[$value[1]]) || EregI("[\\]" ,$this->arrParam[$value[1]])) {
598            $this->arrErr[$value[1]] = "※ " . $value[0] . "のファイル名に日本語やスペースは使用しないで下さい。<br />";   
599        }
600    }
601       
602    //日付チェック
603    // value[0] = 項目名
604    // value[1] = YYYY
605    // value[2] = MM
606    // value[3] = DD
607    function CHECK_DATE($value) {                       
608        if(isset($this->arrErr[$value[1]])) {
609            return;
610        }                                       
611        // 少なくともどれか一つが入力されている。
612        if($this->arrParam[$value[1]] > 0 || $this->arrParam[$value[2]] > 0 || $this->arrParam[$value[3]] > 0) {
613            // 年月日のどれかが入力されていない。
614            if(!(strlen($this->arrParam[$value[1]]) > 0 && strlen($this->arrParam[$value[2]]) > 0 && strlen($this->arrParam[$value[3]]) > 0)) {
615                $this->arrErr[$value[1]] = "※ " . $value[0] . "はすべての項目を入力して下さい。<br />";
616            } else if ( ! checkdate($this->arrParam[$value[2]], $this->arrParam[$value[3]], $this->arrParam[$value[1]])) {                     
617                $this->arrErr[$value[1]] = "※ " . $value[0] . "が正しくありません。<br />";
618            }
619        }
620    }
621   
622    //日付チェック
623    // value[0] = 項目名
624    // value[1] = YYYY
625    // value[2] = MM
626    // value[3] = DD
627    // value[4] = HH
628    // value[5] = mm
629    function CHECK_DATE2($value) {                     
630        if(isset($this->arrErr[$value[1]])) {
631            return;
632        }
633                                   
634        // 少なくともどれか一つが入力されている。
635        if($this->arrParam[$value[1]] > 0 || $this->arrParam[$value[2]] > 0 || $this->arrParam[$value[3]] > 0 || $this->arrParam[$value[4]] >= 0 || $this->arrParam[$value[5]] >= 0) {
636            // 年月日時のどれかが入力されていない。
637            if(!(strlen($this->arrParam[$value[1]]) > 0 && strlen($this->arrParam[$value[2]]) > 0 && strlen($this->arrParam[$value[3]]) > 0 && strlen($this->arrParam[$value[4]]) > 0 && strlen($this->arrParam[$value[5]]) > 0 )) {
638                $this->arrErr[$value[1]] = "※ " . $value[0] . "はすべての項目を入力して下さい。<br />";
639            } else if ( ! checkdate($this->arrParam[$value[2]], $this->arrParam[$value[3]], $this->arrParam[$value[1]])) {
640                $this->arrErr[$value[1]] = "※ " . $value[0] . "が正しくありません。<br />";
641            }
642        }
643    }
644
645    //日付チェック
646    // value[0] = 項目名
647    // value[1] = YYYY
648    // value[2] = MM
649    function CHECK_DATE3($value) {                     
650        if(isset($this->arrErr[$value[1]])) {
651            return;
652        }
653                                   
654        // 少なくともどれか一つが入力されている。
655        if($this->arrParam[$value[1]] > 0 || $this->arrParam[$value[2]] > 0) {
656            // 年月日時のどれかが入力されていない。
657            if(!(strlen($this->arrParam[$value[1]]) > 0 && strlen($this->arrParam[$value[2]]) > 0)) {
658                $this->arrErr[$value[1]] = "※ " . $value[0] . "はすべての項目を入力して下さい。<br />";
659            } else if ( ! checkdate($this->arrParam[$value[2]], 1, $this->arrParam[$value[1]])) {
660                $this->arrErr[$value[1]] = "※ " . $value[0] . "が正しくありません。<br />";
661            }
662        }
663    }
664   
665    /*-----------------------------------------------------------------*/
666    /*  CHECK_SET_TERM
667    /*  年月日に別れた2つの期間の妥当性をチェックし、整合性と期間を返す
668    /* 引数 (開始年,開始月,開始日,終了年,終了月,終了日)
669    /* 戻値 array(1,2,3)
670    /*          1.開始年月日 (YYYYMMDD 000000)
671    /*          2.終了年月日 (YYYYMMDD 235959)
672    /*          3.エラー ( 0 = OK, 1 = NG )
673    /*-----------------------------------------------------------------*/
674    // value[0] = 項目名1
675    // value[1] = 項目名2
676    // value[2] = start_year
677    // value[3] = start_month
678    // value[4] = start_day
679    // value[5] = end_year
680    // value[6] = end_month
681    // value[7] = end_day
682    function CHECK_SET_TERM ($value) {
683
684        // 期間指定
685        if(isset($this->arrErr[$value[2]]) || isset($this->arrErr[$value[5]])) {
686            return;
687        }   
688        $error = 0;
689        if ( (strlen($this->arrParam[$value[2]]) > 0 || strlen($this->arrParam[$value[3]]) > 0 || strlen($this->arrParam[$value[4]] ) > 0) && ! checkdate($this->arrParam[$value[3]], $this->arrParam[$value[4]], $this->arrParam[$value[2]]) ) {
690            $this->arrErr[$value[2]] = "※ " . $value[0] . "を正しく指定してください。<br />";
691        }
692        if ( (strlen($this->arrParam[$value[5]]) > 0 || strlen($this->arrParam[$value[6]]) > 0 || strlen($this->arrParam[$value[7]] ) > 0) && ! checkdate($this->arrParam[$value[6]], $this->arrParam[$value[7]], $this->arrParam[$value[5]]) ) {
693            $this->arrErr[$value[5]] = "※ " . $value[1] . "を正しく指定してください。<br />";
694        }
695        if ( (strlen($this->arrParam[$value[2]]) > 0 && strlen($this->arrParam[$value[3]]) > 0 && strlen($this->arrParam[$value[4]] ) > 0) &&  (strlen($this->arrParam[$value[5]]) > 0 || strlen($this->arrParam[$value[6]]) > 0 || strlen($this->arrParam[$value[7]] ) > 0) ){
696
697            $date1 = $this->arrParam[$value[2]] .sprintf("%02d", $this->arrParam[$value[3]]) .sprintf("%02d",$this->arrParam[$value[4]]) ."000000";
698            $date2 = $this->arrParam[$value[5]] .sprintf("%02d", $this->arrParam[$value[6]]) .sprintf("%02d",$this->arrParam[$value[7]]) ."235959";
699           
700            if (($this->arrErr[$value[2]] == "" && $this->arrErr[$value[5]] == "") && $date1 > $date2) {
701                $this->arrErr[$value[2]] = "※ " .$value[0]. "と" .$value[1]. "の期間指定が不正です。<br />";
702            }
703        }
704    }
705   
706    /*-----------------------------------------------------------------*/
707    /*  CHECK_SET_TERM2
708    /*  年月日時に別れた2つの期間の妥当性をチェックし、整合性と期間を返す
709    /* 引数 (開始年,開始月,開始日,開始時間,開始分,開始秒,
710    /*        終了年,終了月,終了日,終了時間,終了分,終了秒)
711    /* 戻値 array(1,2,3)
712    /*          1.開始年月日 (YYYYMMDDHHmmss)
713    /*          2.終了年月日 (YYYYMMDDHHmmss)
714    /*          3.エラー ( 0 = OK, 1 = NG )
715    /*-----------------------------------------------------------------*/
716    // value[0] = 項目名1
717    // value[1] = 項目名2
718    // value[2] = start_year
719    // value[3] = start_month
720    // value[4] = start_day
721    // value[5] = start_hour
722    // value[6] = start_minute
723    // value[7] = start_second
724    // value[8] = end_year
725    // value[9] = end_month
726    // value[10] = end_day
727    // value[11] = end_hour
728    // value[12] = end_minute   
729    // value[13] = end_second
730   
731    /*-----------------------------------------------------------------*/
732    function CHECK_SET_TERM2 ($value) {
733
734        // 期間指定
735        if(isset($this->arrErr[$value[2]]) || isset($this->arrErr[$value[8]])) {
736            return;
737        }   
738        $error = 0;
739        if ( (strlen($this->arrParam[$value[2]]) > 0 || strlen($this->arrParam[$value[3]]) > 0 || strlen($this->arrParam[$value[4]] ) > 0 || strlen($this->arrParam[$value[5]]) > 0) && ! checkdate($this->arrParam[$value[3]], $this->arrParam[$value[4]], $this->arrParam[$value[2]]) ) {
740            $this->arrErr[$value[2]] = "※ " . $value[0] . "を正しく指定してください。<br />";
741        }
742        if ( (strlen($this->arrParam[$value[8]]) > 0 || strlen($this->arrParam[$value[9]]) > 0 || strlen($this->arrParam[$value[10]] ) > 0 || strlen($this->arrParam[$value[11]] ) > 0) && ! checkdate($this->arrParam[$value[9]], $this->arrParam[$value[10]], $this->arrParam[$value[8]]) ) {
743            $this->arrErr[$value[8]] = "※ " . $value[1] . "を正しく指定してください。<br />";
744        }
745        if ( (strlen($this->arrParam[$value[2]]) > 0 && strlen($this->arrParam[$value[3]]) > 0 && strlen($this->arrParam[$value[4]] ) > 0 && strlen($this->arrParam[$value[5]] ) > 0) &&  (strlen($this->arrParam[$value[8]]) > 0 || strlen($this->arrParam[$value[9]]) > 0 || strlen($this->arrParam[$value[10]] ) > 0 || strlen($this->arrParam[$value[11]] ) > 0) ){
746
747            $date1 = $this->arrParam[$value[2]] .sprintf("%02d", $this->arrParam[$value[3]]) .sprintf("%02d",$this->arrParam[$value[4]]) .sprintf("%02d",$this->arrParam[$value[5]]).sprintf("%02d",$this->arrParam[$value[6]]).sprintf("%02d",$this->arrParam[$value[7]]);
748            $date2 = $this->arrParam[$value[8]] .sprintf("%02d", $this->arrParam[$value[9]]) .sprintf("%02d",$this->arrParam[$value[10]]) .sprintf("%02d",$this->arrParam[$value[11]]).sprintf("%02d",$this->arrParam[$value[12]]).sprintf("%02d",$this->arrParam[$value[13]]);
749           
750            if (($this->arrErr[$value[2]] == "" && $this->arrErr[$value[8]] == "") && $date1 > $date2) {
751                $this->arrErr[$value[2]] = "※ " .$value[0]. "と" .$value[1]. "の期間指定が不正です。<br />";
752            }
753            if($date1 == $date2) {
754                $this->arrErr[$value[2]] = "※ " .$value[0]. "と" .$value[1]. "の期間指定が不正です。<br />";
755            }
756           
757        }
758    }   
759
760    /*-----------------------------------------------------------------*/
761    /*  CHECK_SET_TERM3
762    /*  年月に別れた2つの期間の妥当性をチェックし、整合性と期間を返す
763    /* 引数 (開始年,開始月,終了年,終了月)
764    /* 戻値 array(1,2,3)
765    /*          1.開始年月日 (YYYYMMDD 000000)
766    /*          2.終了年月日 (YYYYMMDD 235959)
767    /*          3.エラー ( 0 = OK, 1 = NG )
768    /*-----------------------------------------------------------------*/
769    // value[0] = 項目名1
770    // value[1] = 項目名2
771    // value[2] = start_year
772    // value[3] = start_month
773    // value[4] = end_year
774    // value[5] = end_month
775    function CHECK_SET_TERM3 ($value) {
776
777        // 期間指定
778        if(isset($this->arrErr[$value[2]]) || isset($this->arrErr[$value[4]])) {
779            return;
780        }   
781        $error = 0;
782        if ( (strlen($this->arrParam[$value[2]]) > 0 || strlen($this->arrParam[$value[3]]) > 0) && ! checkdate($this->arrParam[$value[3]], 1, $this->arrParam[$value[2]]) ) {
783            $this->arrErr[$value[2]] = "※ " . $value[0] . "を正しく指定してください。<br />";
784        }
785        if ( (strlen($this->arrParam[$value[4]]) > 0 || strlen($this->arrParam[$value[5]]) > 0) && ! checkdate($this->arrParam[$value[5]], 1, $this->arrParam[$value[4]]) ) {
786            $this->arrErr[$value[4]] = "※ " . $value[1] . "を正しく指定してください。<br />";
787        }
788        if ( (strlen($this->arrParam[$value[2]]) > 0 && strlen($this->arrParam[$value[3]]) > 0 && (strlen($this->arrParam[$value[4]]) > 0 || strlen($this->arrParam[$value[5]]) > 0 ))) {
789
790            $date1 = $this->arrParam[$value[2]] .sprintf("%02d", $this->arrParam[$value[3]]);
791            $date2 = $this->arrParam[$value[4]] .sprintf("%02d", $this->arrParam[$value[5]]);
792           
793            if (($this->arrErr[$value[2]] == "" && $this->arrErr[$value[5]] == "") && $date1 > $date2) {
794                $this->arrErr[$value[2]] = "※ " .$value[0]. "と" .$value[1]. "の期間指定が不正です。<br />";
795            }
796        }
797    }   
798   
799    //ディレクトリ存在チェック
800    function DIR_CHECK ($value) {
801        if(isset($this->arrErr[$value[1]])) {
802            return;
803        }
804        if(!is_dir($this->arrParam[$value[1]])) {
805            $this->arrErr[$value[1]] = "※ 指定した" . $value[0] . "は存在しません。<br />";
806        }
807    }
808   
809    //ディレクトリ存在チェック
810    function DOMAIN_CHECK ($value) {
811        if(isset($this->arrErr[$value[1]])) {
812            return;
813        }
814        if(strlen($this->arrParam[$value[1]]) > 0 && !ereg("^\.[^.]+\..+", $this->arrParam[$value[1]])) {
815            $this->arrErr[$value[1]] = "※ " . $value[0] . "の形式が不正です。<br />";
816        }
817    }   
818   
819    /* 携帯メールアドレスの判定 */
820    // value[0] = 項目名 value[1] = 判定対象メールアドレス
821    function MOBILE_EMAIL_CHECK( $value ){              // メールアドレスを正規表現で判定する
822        if(isset($this->arrErr[$value[1]])) {
823            return;
824        }
825        if(strlen($this->arrParam[$value[1]]) > 0 && !gfIsMobileMailAddress($this->arrParam[$value[1]])) {
826            $this->arrErr[$value[1]] = "※ " . $value[0] . "は携帯電話のものではありません。<br />";
827        }
828    }
829    /**
830     * 禁止文字列のチェック
831     * value[0] = 項目名 value[1] = 判定対象文字列
832     * value[2] = 入力を禁止する文字列(配列)
833     *
834     * @example $objErr->doFunc(array("URL", "contents", $arrReviewDenyURL), array("PROHIBITED_STR_CHECK"));
835     */
836    function PROHIBITED_STR_CHECK( $value ) {
837        if( isset($this->arrErr[$value[1]]) || empty($this->arrParam[$value[1]]) ) {
838            return;
839        }
840       
841        $targetStr     = $this->arrParam[$value[1]];
842        $prohibitedStr = str_replace(array('|', '/'), array('\|', '\/'), $value[2]);
843       
844        $pattern = '/' . join('|', $prohibitedStr) . '/i';
845        if(preg_match_all($pattern, $this->arrParam[$value[1]], $matches)) {
846            $this->arrErr[$value[1]] = "※ " . $value[0] . "は入力できません。<br />";
847        }
848    }
849}
850?>
Note: See TracBrowser for help on using the repository browser.