source: branches/comu-utf8/data/class/SC_CheckError.php @ 15099

Revision 15099, 32.5 KB checked in by Yammy, 17 years ago (diff)

UTF-8変換済みファイルインポート
1.3.4ベース

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