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

Revision 15641, 38.0 KB checked in by nanasess, 17 years ago (diff)

未定義変数の修正

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