Changeset 23577
- Timestamp:
- 2014/07/20 11:43:50 (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/version-2_13-dev/data/class/SC_CheckError.php
r23570 r23577 53 53 * HTMLのタグをチェックする 54 54 * 55 * @param array $value value[0] = 項目名 value[1] = 判定対象 value[2] = 許可するタグが格納された配列 55 * @param array $value value[0] = 項目名 56 * value[1] = 判定対象 57 * value[2] = 許可するタグが格納された配列 56 58 * @return void 57 59 */ 58 60 public function HTML_TAG_CHECK($value) 59 61 { 60 if (isset($this->arrErr[$value[1]])) { 61 return; 62 } 63 $this->createParam($value); 62 $disp_name = $value[0]; 63 $keyname = $value[1]; 64 $arrAllowedTag = $value[2]; 65 66 if (isset($this->arrErr[$keyname])) { 67 return; 68 } 69 70 $this->createParam($value); 71 64 72 // HTMLに含まれているタグを抽出する 65 $arrTagIncludedHtml = array(); 66 preg_match_all('/<\/?([a-z]+)/i', $this->arrParam[$value[1]], $arrTagIncludedHtml); 73 $match = array(); 74 preg_match_all('/<\/?([a-z]+)/i', $this->arrParam[$keyname], $match); 75 $arrTagIncludedHtml = $match[1]; 67 76 // 抽出結果を小文字に変換 68 foreach ($arrTagIncludedHtml [1]as $key => $matchedTag) {69 $arrTagIncludedHtml[ 1][$key] = strtolower($matchedTag);70 } 71 $arrDiffTag = array_diff($arrTagIncludedHtml [1], $value[2]);77 foreach ($arrTagIncludedHtml as $key => $matchedTag) { 78 $arrTagIncludedHtml[$key] = strtolower($matchedTag); 79 } 80 $arrDiffTag = array_diff($arrTagIncludedHtml, $arrAllowedTag); 72 81 73 82 if (empty($arrDiffTag)) return; … … 79 88 $html_diff_tag_list = implode(', ', $arrDiffTag); 80 89 81 $this->arrErr[$value[1]] = '※ ' . $value[0] . 'に許可されていないタグ ' . $html_diff_tag_list . ' が含まれています。<br />'; 90 $this->arrErr[$keyname] = sprintf( 91 '※ %sに許可されていないタグ %s が含まれています。<br />', 92 $disp_name, 93 $html_diff_tag_list 94 ); 82 95 } 83 96 … … 91 104 public function EXIST_CHECK($value) 92 105 { 93 if (isset($this->arrErr[$value[1]])) { 94 return; 95 } 96 $this->createParam($value); 97 if (!is_array($this->arrParam[$value[1]]) && strlen($this->arrParam[$value[1]]) == 0) { 98 $this->arrErr[$value[1]] = '※ ' . $value[0] . 'が入力されていません。<br />'; 99 } elseif (is_array($this->arrParam[$value[1]]) && count($this->arrParam[$value[1]]) == 0) { 100 $this->arrErr[$value[1]] = '※ ' . $value[0] . 'が選択されていません。<br />'; 106 $disp_name = $value[0]; 107 $keyname = $value[1]; 108 109 if (isset($this->arrErr[$keyname])) { 110 return; 111 } 112 113 $this->createParam($value); 114 115 $input_var = $this->arrParam[$keyname]; 116 if (is_array($input_var)) { 117 if (count($input_var) == 0) { 118 $this->arrErr[$keyname] = 119 "※ {$disp_name}が選択されていません。<br />"; 120 } 121 } else { 122 if (strlen($input_var) == 0) { 123 $this->arrErr[$keyname] = 124 "※ {$disp_name}が入力されていません。<br />"; 125 } 101 126 } 102 127 } … … 111 136 public function EXIST_CHECK_REVERSE($value) 112 137 { 113 if (isset($this->arrErr[$value[0]])) { 114 return; 115 } 138 $keyname = $value[0]; 139 $disp_name = $value[1]; 140 141 if (isset($this->arrErr[$keyname])) { 142 return; 143 } 144 116 145 // $this->createParam($value); 117 if (strlen($this->arrParam[$value[0]]) == 0) { 118 $this->arrErr[$value[0]] = '※ ' . $value[1] . 'が入力されていません。<br />'; 146 147 if (strlen($this->arrParam[$keyname]) == 0) { 148 $this->arrErr[$keyname] = 149 "※ {$disp_name}が入力されていません。<br />"; 119 150 } 120 151 } … … 129 160 public function SPTAB_CHECK($value) 130 161 { 131 if (isset($this->arrErr[$value[1]])) { 132 return; 133 } 134 $this->createParam($value); 135 if (strlen($this->arrParam[$value[1]]) != 0 && preg_match("/^[ \t\r\n]+$/", $this->arrParam[$value[1]])) { 136 $this->arrErr[$value[1]] = '※ ' . $value[0] . 'にスペース、タブ、改行のみの入力はできません。<br />'; 162 $disp_name = $value[0]; 163 $keyname = $value[1]; 164 165 if (isset($this->arrErr[$keyname])) { 166 return; 167 } 168 169 $this->createParam($value); 170 171 $input_var = $this->arrParam[$keyname]; 172 if (strlen($input_var) != 0 173 && preg_match("/^[ \t\r\n]+$/", $input_var) 174 ) { 175 $this->arrErr[$keyname] = sprintf( 176 '※ %sにスペース、タブ、改行のみの入力はできません。<br />', 177 $disp_name 178 ); 137 179 } 138 180 } … … 147 189 public function NO_SPTAB($value) 148 190 { 149 if (isset($this->arrErr[$value[1]])) { 150 return; 151 } 152 $this->createParam($value); 153 if (strlen($this->arrParam[$value[1]]) != 0 && preg_match("/[ \t\r\n]+/u", $this->arrParam[$value[1]])) { 154 $this->arrErr[$value[1]] = '※ ' . $value[0] . 'にスペース、タブ、改行は含めないで下さい。<br />'; 155 } 156 } 157 158 /* ゼロで開始されている数値の判定 */ 191 $disp_name = $value[0]; 192 $keyname = $value[1]; 193 194 if (isset($this->arrErr[$keyname])) { 195 return; 196 } 197 198 $this->createParam($value); 199 200 $input_var = $this->arrParam[$keyname]; 201 if (strlen($input_var) != 0 202 && preg_match("/[ \t\r\n]+/u", $input_var) 203 ) { 204 $this->arrErr[$keyname] = sprintf( 205 '※ %sにスペース、タブ、改行は含めないで下さい。<br />', 206 $disp_name 207 ); 208 } 209 } 210 211 /** 212 * ゼロで開始されている数値の判定 213 * 214 * ゼロで始まる数値の場合エラーを返す 215 * @param array $value value[0] = 項目名 value[1] = 判定対象 216 * @return void 217 */ 159 218 public function ZERO_START($value) 160 219 { 161 if (isset($this->arrErr[$value[1]])) { 162 return; 163 } 164 $this->createParam($value); 165 if (strlen($this->arrParam[$value[1]]) != 0 && preg_match("/^[0]+[0-9]+$/", $this->arrParam[$value[1]])) { 166 $this->arrErr[$value[1]] = '※ ' . $value[0] . 'に0で始まる数値が入力されています。<br />'; 220 $disp_name = $value[0]; 221 $keyname = $value[1]; 222 223 if (isset($this->arrErr[$keyname])) { 224 return; 225 } 226 227 $this->createParam($value); 228 229 $input_var = $this->arrParam[$keyname]; 230 if (strlen($input_var) != 0 231 && preg_match("/^[0]+[0-9]+$/", $input_var) 232 ) { 233 $this->arrErr[$keyname] = 234 "※ {$disp_name}に0で始まる数値が入力されています。<br />"; 167 235 } 168 236 } … … 177 245 public function SELECT_CHECK($value) 178 246 { 179 if (isset($this->arrErr[$value[1]])) { 180 return; 181 } 182 $this->createParam($value); 183 if (strlen($this->arrParam[$value[1]]) == 0) { 184 $this->arrErr[$value[1]] = '※ ' . $value[0] . 'が選択されていません。<br />'; 247 $disp_name = $value[0]; 248 $keyname = $value[1]; 249 250 if (isset($this->arrErr[$keyname])) { 251 return; 252 } 253 254 $this->createParam($value); 255 256 if (strlen($this->arrParam[$keyname]) == 0) { 257 $this->arrErr[$keyname] = 258 "※ {$disp_name}が選択されていません。<br />"; 185 259 } 186 260 } … … 190 264 * 191 265 * 入力が指定文字数以上ならエラーを返す 192 * @param array $value value[0] = 項目名1 value[1] = 項目名2 value[2] = 判定対象文字列1 value[3] = 判定対象文字列2 266 * @param array $value value[0] = 項目名1 267 * value[1] = 項目名2 268 * value[2] = 判定対象文字列1 269 * value[3] = 判定対象文字列2 193 270 * @return void 194 271 */ 195 272 public function EQUAL_CHECK($value) 196 273 { 197 if (isset($this->arrErr[$value[2]]) || isset($this->arrErr[$value[3]])) { 198 return; 199 } 274 $disp_name1 = $value[0]; 275 $disp_name2 = $value[1]; 276 $keyname1 = $value[2]; 277 $keyname2 = $value[3]; 278 279 if (isset($this->arrErr[$keyname1]) 280 || isset($this->arrErr[$keyname2]) 281 ) { 282 return; 283 } 284 200 285 // $this->createParam($value); 286 201 287 // 文字数の取得 202 if ($this->arrParam[$value[2]] !== $this->arrParam[$value[3]]) { 203 $this->arrErr[$value[2]] = '※ ' . $value[0] . 'と' . $value[1] . 'が一致しません。<br />'; 288 if ($this->arrParam[$keyname1] !== $this->arrParam[$keyname2]) { 289 $this->arrErr[$keyname1] = 290 "※{$disp_name1}と{$disp_name2}が一致しません。<br />"; 204 291 } 205 292 } … … 209 296 * 210 297 * 入力が指定文字数以上ならエラーを返す 211 * @param array $value value[0] = 項目名1 value[1] = 項目名2 value[2] = 判定対象文字列1 value[3] = 判定対象文字列2 298 * @param array $value value[0] = 項目名1 299 * value[1] = 項目名2 300 * value[2] = 判定対象文字列1 301 * value[3] = 判定対象文字列2 212 302 * @return void 213 303 */ 214 304 public function DIFFERENT_CHECK($value) 215 305 { 216 if (isset($this->arrErr[$value[2]]) || isset($this->arrErr[$value[3]])) { 217 return; 218 } 306 $disp_name1 = $value[0]; 307 $disp_name2 = $value[1]; 308 $keyname1 = $value[2]; 309 $keyname2 = $value[3]; 310 311 if (isset($this->arrErr[$keyname1]) 312 || isset($this->arrErr[$keyname2]) 313 ) { 314 return; 315 } 316 219 317 // $this->createParam($value); 318 220 319 // 文字数の取得 221 if ($this->arrParam[$value[2]] == $this->arrParam[$value[3]]) { 222 $this->arrErr[$value[2]] = '※ ' . $value[0] . 'と' . $value[1] . 'は、同じ値を使用できません。<br />'; 320 if ($this->arrParam[$keyname1] == $this->arrParam[$keyname2]) { 321 $this->arrErr[$keyname1] = sprintf( 322 '※ %sと%sは、同じ値を使用できません。<br />', 323 $disp_name1, 324 $disp_name2 325 ); 223 326 } 224 327 } … … 228 331 * 229 332 * 入力が指定文字数以上ならエラーを返す 230 * @param array $value value[0] = 項目名1 value[1] = 項目名2 value[2] = 判定対象文字列1 value[3] = 判定対象文字列2 333 * @param array $value value[0] = 項目名1 334 * value[1] = 項目名2 335 * value[2] = 判定対象文字列1 336 * value[3] = 判定対象文字列2 231 337 * @return void 232 338 */ 233 339 public function GREATER_CHECK($value) 234 340 { 235 if (isset($this->arrErr[$value[2]]) || isset($this->arrErr[$value[3]])) { 236 return; 237 } 341 $disp_name1 = $value[0]; 342 $disp_name2 = $value[1]; 343 $keyname1 = $value[2]; 344 $keyname2 = $value[3]; 345 346 if (isset($this->arrErr[$keyname1]) 347 || isset($this->arrErr[$keyname2]) 348 ) { 349 return; 350 } 351 238 352 // $this->createParam($value); 353 239 354 // 文字数の取得 240 if ($this->arrParam[$value[2]] != '' && $this->arrParam[$value[3]] != '' && ($this->arrParam[$value[2]] > $this->arrParam[$value[3]])) { 241 $this->arrErr[$value[2]] = '※ ' . $value[0] . 'は' . $value[1] . 'より大きい値を入力できません。<br />'; 355 $input_var1 = $this->arrParam[$keyname1]; 356 $input_var2 = $this->arrParam[$keyname2]; 357 if ($input_var1 != '' 358 && $input_var2 != '' 359 && ($input_var1 > $input_var2) 360 ) { 361 $this->arrErr[$keyname1] = sprintf( 362 '※ %sは%sより大きい値を入力できません。<br />', 363 $disp_name1, 364 $disp_name1 365 ); 242 366 } 243 367 } … … 247 371 * 248 372 * 入力が指定文字数以上ならエラーを返す 249 * @param array $value value[0] = 項目名 value[1] = 判定対象文字列 value[2] = 最大文字数(半角も全角も1文字として数える) 373 * @param array $value value[0] = 項目名 374 * value[1] = 判定対象文字列 375 * value[2] = 最大文字数(半角も全角も1文字として数える) 250 376 * @return void 251 377 */ 252 378 public function MAX_LENGTH_CHECK($value) 253 379 { 254 if (isset($this->arrErr[$value[1]])) { 255 return; 256 } 257 $this->createParam($value); 380 $disp_name = $value[0]; 381 $keyname = $value[1]; 382 $max_str_len = $value[2]; 383 384 if (isset($this->arrErr[$keyname])) { 385 return; 386 } 387 388 $this->createParam($value); 389 258 390 // 文字数の取得 259 if (mb_strlen($this->arrParam[$value[1]]) > $value[2]) { 260 $this->arrErr[$value[1]] = '※ ' . $value[0] . 'は' . $value[2] . '字以下で入力してください。<br />'; 391 if (mb_strlen($this->arrParam[$keyname]) > $max_str_len) { 392 $this->arrErr[$keyname] = sprintf( 393 '※ %sは%d字以下で入力してください。<br />', 394 $disp_name, 395 $max_str_len 396 ); 261 397 } 262 398 } … … 266 402 * 267 403 * 入力が指定文字数未満ならエラーを返す 268 * @param array $value value[0] = 項目名 value[1] = 判定対象文字列 value[2] = 最小文字数(半角も全角も1文字として数える) 404 * @param array $value value[0] = 項目名 405 * value[1] = 判定対象文字列 406 * value[2] = 最小文字数(半角も全角も1文字として数える) 269 407 * @return void 270 408 */ 271 409 public function MIN_LENGTH_CHECK($value) 272 410 { 273 if (isset($this->arrErr[$value[1]])) { 274 return; 275 } 276 $this->createParam($value); 411 $disp_name = $value[0]; 412 $keyname = $value[1]; 413 $min_str_len = $value[2]; 414 415 if (isset($this->arrErr[$keyname])) { 416 return; 417 } 418 419 $this->createParam($value); 420 277 421 // 文字数の取得 278 if (mb_strlen($this->arrParam[$value[1]]) < $value[2]) { 279 $this->arrErr[$value[1]] = '※ ' . $value[0] . 'は' . $value[2] . '字以上で入力してください。<br />'; 422 if (mb_strlen($this->arrParam[$keyname]) < $min_str_len) { 423 $this->arrErr[$keyname] = sprintf( 424 '※ %sは%d字以上で入力してください。<br />', 425 $disp_name, 426 $min_str_len 427 ); 280 428 } 281 429 } … … 285 433 * 286 434 * 入力が最大数以上ならエラーを返す 287 * @param array $value value[0] = 項目名 value[1] = 判定対象文字列 value[2] = 最大数] 435 * @param array $value value[0] = 項目名 436 * value[1] = 判定対象文字列 437 * value[2] = 最大数 288 438 * @return void 289 439 */ 290 440 public function MAX_CHECK($value) 291 441 { 292 if (isset($this->arrErr[$value[1]])) { 293 return; 294 } 295 $this->createParam($value); 442 $disp_name = $value[0]; 443 $keyname = $value[1]; 444 $max_threshold = $value[2]; 445 446 if (isset($this->arrErr[$keyname])) { 447 return; 448 } 449 450 $this->createParam($value); 451 296 452 // 文字数の取得 297 if ($this->arrParam[$value[1]] > $value[2]) { 298 $this->arrErr[$value[1]] = '※ ' . $value[0] . 'は' . $value[2] . '以下で入力してください。<br />'; 453 if ($this->arrParam[$keyname] > $max_threshold) { 454 $this->arrErr[$keyname] = sprintf( 455 '※ %sは%d以下で入力してください。<br />', 456 $disp_name, 457 $max_threshold 458 ); 299 459 } 300 460 } … … 304 464 * 305 465 * 入力が最小数未満ならエラーを返す 306 * @param array $value value[0] = 項目名 value[1] = 判定対象文字列 value[2] = 最小数 466 * @param array $value value[0] = 項目名 467 * value[1] = 判定対象文字列 468 * value[2] = 最小数 307 469 * @return void 308 470 */ 309 471 public function MIN_CHECK($value) 310 472 { 311 if (isset($this->arrErr[$value[1]])) { 312 return; 313 } 314 $this->createParam($value); 315 if ($this->arrParam[$value[1]] < $value[2]) { 316 $this->arrErr[$value[1]] = '※ ' . $value[0] . 'は' . $value[2] . '以上で入力してください。<br />'; 473 $disp_name = $value[0]; 474 $keyname = $value[1]; 475 $min_threshold = $value[2]; 476 477 if (isset($this->arrErr[$keyname])) { 478 return; 479 } 480 481 $this->createParam($value); 482 483 if ($this->arrParam[$keyname] < $min_threshold) { 484 $this->arrErr[$keyname] = sprintf( 485 '※ %sは%d以上で入力してください。<br />', 486 $disp_name, 487 $min_threshold 488 ); 317 489 } 318 490 } … … 327 499 public function NUM_CHECK($value) 328 500 { 329 if (isset($this->arrErr[$value[1]])) { 330 return; 331 } 332 $this->createParam($value); 333 if ($this->numelicCheck($this->arrParam[$value[1]])) { 334 $this->arrErr[$value[1]] = '※ ' . $value[0] . 'は数字で入力してください。<br />'; 501 $disp_name = $value[0]; 502 $keyname = $value[1]; 503 504 if (isset($this->arrErr[$keyname])) { 505 return; 506 } 507 508 $this->createParam($value); 509 510 if ($this->numelicCheck($this->arrParam[$keyname])) { 511 $this->arrErr[$keyname] = 512 "※ {$disp_name}は数字で入力してください。<br />"; 335 513 } 336 514 } … … 345 523 public function NUM_POINT_CHECK($value) 346 524 { 347 if (isset($this->arrErr[$value[1]])) { 348 return; 349 } 350 $this->createParam($value); 351 if (strlen($this->arrParam[$value[1]]) > 0 && !is_numeric($this->arrParam[$value[1]])) { 352 $this->arrErr[$value[1]] = '※ ' . $value[0] . 'は数字で入力してください。<br />'; 525 $disp_name = $value[0]; 526 $keyname = $value[1]; 527 528 if (isset($this->arrErr[$keyname])) { 529 return; 530 } 531 532 $this->createParam($value); 533 534 if (strlen($this->arrParam[$keyname]) > 0 535 && !is_numeric($this->arrParam[$keyname]) 536 ) { 537 $this->arrErr[$keyname] = 538 "※ {$disp_name}は数字で入力してください。<br />"; 353 539 } 354 540 } … … 356 542 public function ALPHA_CHECK($value) 357 543 { 358 if (isset($this->arrErr[$value[1]])) { 359 return; 360 } 361 $this->createParam($value); 362 if (strlen($this->arrParam[$value[1]]) > 0 && !ctype_alpha($this->arrParam[$value[1]])) { 363 $this->arrErr[$value[1]] = '※ ' . $value[0] . 'は半角英字で入力してください。<br />'; 544 $disp_name = $value[0]; 545 $keyname = $value[1]; 546 547 if (isset($this->arrErr[$keyname])) { 548 return; 549 } 550 551 $this->createParam($value); 552 553 if (strlen($this->arrParam[$keyname]) > 0 554 && !ctype_alpha($this->arrParam[$keyname]) 555 ) { 556 $this->arrErr[$keyname] = 557 "※ {$disp_name}は半角英字で入力してください。<br />"; 364 558 } 365 559 } … … 380 574 public function TEL_CHECK($value) 381 575 { 576 $disp_name = $value[0]; 577 $keyname1 = $value[1]; 578 $keyname2 = $value[2]; 579 $keyname3 = $value[3]; 580 382 581 $telItemLen = isset($value[4]) ? $value[4] : TEL_ITEM_LEN; 383 582 $telLen = isset($value[5]) ? $value[5] : TEL_LEN; 384 583 385 if (isset($this->arrErr[$value[1]]) || isset($this->arrErr[$value[2]]) || isset($this->arrErr[$value[3]])) { 386 return; 387 } 388 $this->createParam($value); 584 if (isset($this->arrErr[$keyname1]) 585 || isset($this->arrErr[$keyname2]) 586 || isset($this->arrErr[$keyname3]) 587 ) { 588 return; 589 } 590 591 $this->createParam($value); 592 389 593 $cnt = 0; 390 391 594 for ($i = 1; $i <= 3; $i++) { 392 if (strlen($this->arrParam[$value[$i]]) > 0) { 595 $keyname = ${"keyname{$i}"}; 596 if (strlen($this->arrParam[$keyname]) > 0) { 393 597 $cnt++; 394 598 } … … 397 601 // 全ての項目が満たされていない場合を判定(一部だけ入力されている状態) 398 602 if ($cnt > 0 && $cnt < 3) { 399 $this->arrErr[$value[1]] .= '※ ' . $value[0] . 'は全ての項目を入力してください。<br />'; 603 $this->arrErr[$keyname1] .= 604 "※ {$disp_name}は全ての項目を入力してください。<br />"; 400 605 } 401 606 402 607 $total_count = 0; 403 608 for ($i = 1; $i <= 3; $i++) { 404 if (strlen($this->arrParam[$value[$i]]) > 0 && strlen($this->arrParam[$value[$i]]) > $telItemLen) { 405 $this->arrErr[$value[$i]] .= '※ ' . $value[0] . $i . 'は' . $telItemLen . '字以内で入力してください。<br />'; 406 } elseif ($this->numelicCheck($this->arrParam[$value[$i]])) { 407 $this->arrErr[$value[$i]] .= '※ ' . $value[0] . $i . 'は数字で入力してください。<br />'; 408 } 409 $total_count += strlen($this->arrParam[$value[$i]]); 609 $keyname = ${"keyname{$i}"}; 610 $input_var = $this->arrParam[$keyname]; 611 612 if (strlen($input_var) > 0 && strlen($input_var) > $telItemLen) { 613 $this->arrErr[$keyname] .= sprintf( 614 '※ %sは%d字以内で入力してください。<br />', 615 $disp_name . $i, 616 $telItemLen 617 ); 618 } elseif ($this->numelicCheck($input_var)) { 619 $this->arrErr[$keyname] .= 620 "※ {$disp_name}{$i}は数字で入力してください。<br />"; 621 } 622 623 $total_count += strlen($input_var); 410 624 } 411 625 412 626 // 合計値チェック 413 627 if ($total_count > $telLen) { 414 $this->arrErr[$value[3]] .= '※ ' . $value[0] . 'は' . $telLen . '文字以内で入力してください。<br />'; 628 $this->arrErr[$keyname3] .= 629 "※ {$disp_name}は{$telLen}文字以内で入力してください。<br />"; 415 630 } 416 631 } … … 422 637 public function FULL_EXIST_CHECK($value) 423 638 { 639 $disp_name = $value[0]; 640 $keyname = $value[1]; 641 642 $this->createParam($value); 643 644 // 既に該当項目にエラーがある場合は、判定しない。 424 645 $max = count($value); 425 $this->createParam($value);426 // 既に該当項目にエラーがある場合は、判定しない。427 646 for ($i = 1; $i < $max; $i++) { 428 647 if (isset($this->arrErr[$value[$i]])) { … … 441 660 442 661 if ($blank) { 443 $this->arrErr[$value[1]] = '※ ' . $value[0] . 'が入力されていません。<br />'; 662 $this->arrErr[$keyname] = 663 "※ {$disp_name}が入力されていません。<br />"; 444 664 } 445 665 } … … 451 671 public function ALL_EXIST_CHECK($value) 452 672 { 673 $disp_name = $value[0]; 674 $keyname = $value[1]; 675 676 // 既に該当項目にエラーがある場合は、判定しない。 453 677 $max = count($value); 454 455 // 既に該当項目にエラーがある場合は、判定しない。456 678 for ($i = 1; $i < $max; $i++) { 457 679 if (isset($this->arrErr[$value[$i]])) { … … 473 695 474 696 if ($blank && $input) { 475 $this->arrErr[$value[1]] = '※ ' . $value[0] . 'は全ての項目を入力して下さい。<br />'; 697 $this->arrErr[$keyname] = 698 "※ {$disp_name}は全ての項目を入力して下さい。<br />"; 476 699 } 477 700 } … … 483 706 public function ONE_EXIST_CHECK($value) 484 707 { 708 $disp_name = $value[0]; 709 $keyname = $value[1]; 710 711 $this->createParam($value); 712 713 // 既に該当項目にエラーがある場合は、判定しない。 485 714 $max = count($value); 486 $this->createParam($value);487 // 既に該当項目にエラーがある場合は、判定しない。488 715 for ($i = 1; $i < $max; $i++) { 489 716 if (isset($this->arrErr[$value[$i]])) { … … 502 729 503 730 if (!$input) { 504 $this->arrErr[$value[1]] = '※ ' . $value[0] . 'が入力されていません。<br />'; 731 $this->arrErr[$keyname] = 732 "※ {$disp_name}が入力されていません。<br />"; 505 733 } 506 734 } … … 512 740 public function TOP_EXIST_CHECK($value) 513 741 { 742 $disp_name = $value[0]; 743 $keyname = $value[1]; 744 745 $this->createParam($value); 746 747 // 既に該当項目にエラーがある場合は、判定しない。 514 748 $max = count($value); 515 $this->createParam($value);516 517 // 既に該当項目にエラーがある場合は、判定しない。518 749 for ($i = 1; $i < $max; $i++) { 519 750 if (isset($this->arrErr[$value[$i]])) { … … 537 768 538 769 if ($error) { 539 $this->arrErr[$value[1]] = '※ ' . $value[0] . 'は先頭の項目から順番に入力して下さい。<br />'; 770 $this->arrErr[$keyname] = 771 "※ {$disp_name}は先頭の項目から順番に入力して下さい。<br />"; 540 772 } 541 773 } … … 546 778 public function KANA_CHECK($value) 547 779 { 548 if (isset($this->arrErr[$value[1]])) { 549 return; 550 } 551 $this->createParam($value); 552 if (strlen($this->arrParam[$value[1]]) > 0 && !preg_match("/^[ァ-ヶヲ-゚ー]+$/u", $this->arrParam[$value[1]])) { 553 $this->arrErr[$value[1]] = '※ ' . $value[0] . 'はカタカナで入力してください。<br />'; 780 $disp_name = $value[0]; 781 $keyname = $value[1]; 782 783 if (isset($this->arrErr[$keyname])) { 784 return; 785 } 786 787 $this->createParam($value); 788 789 $input_var = $this->arrParam[$keyname]; 790 $pattern = "/^[ァ-ヶヲ-゚ー]+$/u"; 791 if (strlen($input_var) > 0 && !preg_match($pattern, $input_var)) { 792 $this->arrErr[$keyname] = 793 "※ {$disp_name}はカタカナで入力してください。<br />"; 554 794 } 555 795 } … … 560 800 public function KANABLANK_CHECK($value) 561 801 { 562 if (isset($this->arrErr[$value[1]])) { 563 return; 564 } 565 $this->createParam($value); 566 if (strlen($this->arrParam[$value[1]]) > 0 && !preg_match("/^([ \t\r\n]|[ァ-ヶ]|[ー])+$/u", $this->arrParam[$value[1]])) { 567 $this->arrErr[$value[1]] = '※ ' . $value[0] . 'はカタカナで入力してください。<br />'; 802 $disp_name = $value[0]; 803 $keyname = $value[1]; 804 805 if (isset($this->arrErr[$keyname])) { 806 return; 807 } 808 809 $this->createParam($value); 810 811 $input_var = $this->arrParam[$keyname]; 812 $pattern = "/^([ \t\r\n]|[ァ-ヶ]|[ー])+$/u"; 813 if (strlen($input_var) > 0 && !preg_match($pattern, $input_var)) { 814 $this->arrErr[$keyname] = 815 "※ {$disp_name}はカタカナで入力してください。<br />"; 568 816 } 569 817 } … … 574 822 public function ALNUM_CHECK($value) 575 823 { 576 if (isset($this->arrErr[$value[1]])) { 577 return; 578 } 579 $this->createParam($value); 580 if (strlen($this->arrParam[$value[1]]) > 0 && !ctype_alnum($this->arrParam[$value[1]])) { 581 $this->arrErr[$value[1]] = '※ ' . $value[0] . 'は英数字で入力してください。<br />'; 824 $disp_name = $value[0]; 825 $keyname = $value[1]; 826 827 if (isset($this->arrErr[$keyname])) { 828 return; 829 } 830 831 $this->createParam($value); 832 833 $input_var = $this->arrParam[$keyname]; 834 if (strlen($input_var) > 0 && !ctype_alnum($input_var)) { 835 $this->arrErr[$keyname] = 836 "※ {$disp_name}は英数字で入力してください。<br />"; 582 837 } 583 838 } … … 588 843 public function GRAPH_CHECK($value) 589 844 { 590 if (isset($this->arrErr[$value[1]])) { 591 return; 592 } 593 $this->createParam($value); 594 if (strlen($this->arrParam[$value[1]]) > 0 && !preg_match("/^[[:graph:][:space:]]+$/i", $this->arrParam[$value[1]])) { 595 $this->arrErr[$value[1]] = '※ ' . $value[0] . 'は英数記号で入力してください。<br />'; 845 $disp_name = $value[0]; 846 $keyname = $value[1]; 847 848 if (isset($this->arrErr[$keyname])) { 849 return; 850 } 851 852 $this->createParam($value); 853 854 $input_var = $this->arrParam[$keyname]; 855 $pattern = "/^[[:graph:][:space:]]+$/i"; 856 if (strlen($input_var) > 0 && !preg_match($pattern, $input_var)) { 857 $this->arrErr[$keyname] = 858 "※ {$disp_name}は英数記号で入力してください。<br />"; 596 859 } 597 860 } … … 602 865 public function ZERO_CHECK($value) 603 866 { 604 $this->createParam($value); 605 if ($this->arrParam[$value[1]] == '0') { 606 $this->arrErr[$value[1]] = '※ ' . $value[0] . 'は1以上を入力してください。<br />'; 867 $disp_name = $value[0]; 868 $keyname = $value[1]; 869 870 $this->createParam($value); 871 872 if ($this->arrParam[$keyname] == '0') { 873 $this->arrErr[$keyname] = 874 "※ {$disp_name}は1以上を入力してください。<br />"; 607 875 } 608 876 } … … 613 881 public function NUM_RANGE_CHECK($value) 614 882 { 615 if (isset($this->arrErr[$value[1]])) { 616 return; 617 } 618 $this->createParam($value); 619 // $this->arrParam[$value[0]] = mb_convert_kana($this->arrParam[$value[0]], 'n'); 620 $count = strlen($this->arrParam[$value[1]]); 621 if (($count > 0) && $value[2] > $count || $value[3] < $count) { 622 $this->arrErr[$value[1]] = "※ $value[0]は$value[2]桁~$value[3]桁で入力して下さい。<br />"; 883 $disp_name = $value[0]; 884 $keyname = $value[1]; 885 $min_digit = $value[2]; 886 $max_digit = $value[3]; 887 888 if (isset($this->arrErr[$keyname])) { 889 return; 890 } 891 892 $this->createParam($value); 893 894 // $this->arrParam[$keyname] = mb_convert_kana($this->arrParam[$keyname], 'n'); 895 $count = strlen($this->arrParam[$keyname]); 896 if (($count > 0) && $min_digit > $count || $max_digit < $count) { 897 $this->arrErr[$keyname] = sprintf( 898 '※ %sは%d桁~%d桁で入力して下さい。<br />', 899 $disp_name, 900 $min_digit, 901 $max_digit 902 ); 623 903 } 624 904 } … … 629 909 public function NUM_COUNT_CHECK($value) 630 910 { 631 if (isset($this->arrErr[$value[1]])) { 632 return; 633 } 634 $this->createParam($value); 635 $count = strlen($this->arrParam[$value[1]]); 636 if (($count > 0) && $count != $value[2]) { 637 $this->arrErr[$value[1]] = "※ $value[0]は$value[2]桁で入力して下さい。<br />"; 911 $disp_name = $value[0]; 912 $keyname = $value[1]; 913 $digit = $value[2]; 914 915 if (isset($this->arrErr[$keyname])) { 916 return; 917 } 918 919 $this->createParam($value); 920 921 $count = strlen($this->arrParam[$keyname]); 922 if (($count > 0) && $count != $digit) { 923 $this->arrErr[$keyname] = 924 "※ {$disp_name}は{$digit}桁で入力して下さい。<br />"; 638 925 } 639 926 } … … 649 936 public function EMAIL_CHECK($value) 650 937 { 651 if (isset($this->arrErr[$value[1]])) { 938 $disp_name = $value[0]; 939 $keyname = $value[1]; 940 941 if (isset($this->arrErr[$keyname])) { 652 942 return; 653 943 } … … 656 946 657 947 // 入力がない場合処理しない 658 if (strlen($this->arrParam[$ value[1]]) === 0) {948 if (strlen($this->arrParam[$keyname]) === 0) { 659 949 return; 660 950 } … … 683 973 } 684 974 685 if (!preg_match($regexp, $this->arrParam[$ value[1]])) {686 $this->arrErr[$ value[1]] = '※ ' . $value[0] . 'の形式が不正です。<br />';975 if (!preg_match($regexp, $this->arrParam[$keyname])) { 976 $this->arrErr[$keyname] = "※ {$disp_name}の形式が不正です。<br />"; 687 977 688 978 return; … … 700 990 public function EMAIL_CHAR_CHECK($value) 701 991 { 702 if (isset($this->arrErr[$value[1]])) { 703 return; 704 } 705 $this->createParam($value); 706 if (strlen($this->arrParam[$value[1]]) > 0 && !preg_match("/^[a-zA-Z0-9_\.@\+\?-]+$/i", $this->arrParam[$value[1]])) { 707 $this->arrErr[$value[1]] = '※ ' . $value[0] . 'に使用する文字を正しく入力してください。<br />'; 992 $disp_name = $value[0]; 993 $keyname = $value[1]; 994 995 if (isset($this->arrErr[$keyname])) { 996 return; 997 } 998 999 $this->createParam($value); 1000 1001 $input_var = $this->arrParam[$keyname]; 1002 $pattern = "/^[a-zA-Z0-9_\.@\+\?-]+$/i"; 1003 if (strlen($input_var) > 0 && !preg_match($pattern, $input_var)) { 1004 $this->arrErr[$keyname] = 1005 "※ {$disp_name}に使用する文字を正しく入力してください。<br />"; 708 1006 } 709 1007 } … … 714 1012 public function URL_CHECK($value) 715 1013 { 716 if (isset($this->arrErr[$value[1]])) { 717 return; 718 } 719 if (strlen($this->arrParam[$value[1]]) > 0 && !preg_match("@^https?://+($|[a-zA-Z0-9_~=:&\?\.\/-])+$@i", $this->arrParam[$value[1]])) { 720 $this->arrErr[$value[1]] = '※ ' . $value[0] . 'を正しく入力してください。<br />'; 1014 $disp_name = $value[0]; 1015 $keyname = $value[1]; 1016 1017 if (isset($this->arrErr[$keyname])) { 1018 return; 1019 } 1020 1021 $input_var = $this->arrParam[$keyname]; 1022 $pattern = "@^https?://+($|[a-zA-Z0-9_~=:&\?\.\/-])+$@i"; 1023 if (strlen($input_var) > 0 && !preg_match($pattern, $input_var)) { 1024 $this->arrErr[$keyname] = 1025 "※ {$disp_name}を正しく入力してください。<br />"; 721 1026 } 722 1027 } … … 726 1031 public function IP_CHECK($value) 727 1032 { 728 if (isset($this->arrErr[$value[1]])) { 729 return; 730 } 1033 $disp_name = $value[0]; 1034 $keyname = $value[1]; 1035 1036 if (isset($this->arrErr[$keyname])) { 1037 return; 1038 } 1039 731 1040 //改行コードが含まれている場合には配列に変換 732 $params = str_replace("\r", '', $this->arrParam[$ value[1]]);1041 $params = str_replace("\r", '', $this->arrParam[$keyname]); 733 1042 if (!empty($params)) { 734 1043 if (strpos($params, "\n") === false) { … … 739 1048 $param = trim($param); 740 1049 if (long2ip(ip2long($param)) != trim($param) && !empty($param)) { 741 $this->arrErr[$value[1]] = '※ ' . $value[0] . 'に正しい形式のIPアドレスを入力してください。<br />'; 1050 $this->arrErr[$keyname] = 1051 "※ {$disp_name}に正しい形式のIPアドレスを入力してください。<br />"; 742 1052 } 743 1053 } … … 750 1060 public function FILE_EXT_CHECK($value) 751 1061 { 752 if (isset($this->arrErr[$value[1]]) || count($value[2]) == 0) { 753 return; 754 } 1062 $disp_name = $value[0]; 1063 $keyname = $value[1]; 1064 $arrExtension = $value[2]; 1065 1066 if (isset($this->arrErr[$keyname]) || count($arrExtension) == 0) { 1067 return; 1068 } 1069 755 1070 $this->createParam($value); 756 1071 757 1072 $match = false; 758 if (strlen($_FILES[$value[1]]['name']) >= 1) {759 $filename = $_FILES[$value[1]]['name'];760 761 foreach ($value[2] as $check_ext) {762 $match = preg_match( '/' . preg_quote('.' . $check_ext) . '$/i', $filename) >= 1;1073 $filename = $_FILES[$keyname]['name']; 1074 if (strlen($filename) >= 1) { 1075 foreach ($arrExtension as $check_ext) { 1076 $pattern = '/' . preg_quote('.' . $check_ext) . '$/i'; 1077 $match = preg_match($pattern, $filename) >= 1; 763 1078 if ($match === true) { 764 1079 break 1; … … 767 1082 } 768 1083 if ($match === false) { 769 $str_ext = implode('・', $value[2]); 770 $this->arrErr[$value[1]] = '※ ' . $value[0] . 'で許可されている形式は、' . $str_ext . 'です。<br />'; 1084 $str_ext = implode('・', $arrExtension); 1085 $this->arrErr[$keyname] = 1086 "※ {$disp_name}で許可されている形式は、{$str_ext}です。<br />"; 771 1087 } 772 1088 } … … 777 1093 public function FIND_FILE($value) 778 1094 { 779 if (isset($this->arrErr[$value[1]])) { 1095 $disp_name = $value[0]; 1096 $keyname = $value[1]; 1097 $target_dir = $value[2]; 1098 1099 if (isset($this->arrErr[$keyname])) { 780 1100 return; 781 1101 } 782 1102 783 1103 // $this->createParam($value); 784 if ($value[2] != '') { 785 $dir = $value[2]; 1104 1105 if ($target_dir != '') { 1106 $dir = $target_dir; 786 1107 } else { 787 1108 $dir = IMAGE_SAVE_REALDIR; 788 1109 } 789 1110 790 $path = $dir . '/' . $this->arrParam[$ value[1]];1111 $path = $dir . '/' . $this->arrParam[$keyname]; 791 1112 $path = str_replace('//', '/', $path); 792 1113 793 if ($this->arrParam[$ value[1]] != '' && !file_exists($path)) {794 $this->arrErr[$ value[1]] = '※ ' . $path . 'が見つかりません。<br />';1114 if ($this->arrParam[$keyname] != '' && !file_exists($path)) { 1115 $this->arrErr[$keyname] = "※ {$path}が見つかりません。<br />"; 795 1116 } 796 1117 } … … 801 1122 public function FILE_EXIST_CHECK($value) 802 1123 { 803 if (isset($this->arrErr[$value[1]])) { 804 return; 805 } 806 $this->createParam($value); 807 if (!($_FILES[$value[1]]['size'] != '' && $_FILES[$value[1]]['size'] > 0)) { 808 $this->arrErr[$value[1]] = '※ ' . $value[0] . 'をアップロードして下さい。<br />'; 1124 $disp_name = $value[0]; 1125 $keyname = $value[1]; 1126 1127 if (isset($this->arrErr[$keyname])) { 1128 return; 1129 } 1130 1131 $this->createParam($value); 1132 1133 $file_size = $_FILES[$keyname]['size']; 1134 if ($file_size == '' || !($file_size > 0)) { 1135 $this->arrErr[$keyname] = 1136 "※ {$disp_name}をアップロードして下さい。<br />"; 809 1137 } 810 1138 } … … 815 1143 public function FILE_SIZE_CHECK($value) 816 1144 { 817 if (isset($this->arrErr[$value[1]])) { 818 return; 819 } 820 $this->createParam($value); 821 if ($_FILES[$value[1]]['size'] > $value[2] * 1024) { 1145 $disp_name = $value[0]; 1146 $keyname = $value[1]; 1147 $max_file_size = $value[2]; 1148 1149 if (isset($this->arrErr[$keyname])) { 1150 return; 1151 } 1152 1153 $this->createParam($value); 1154 1155 if ($_FILES[$keyname]['size'] > $max_file_size * 1024) { 822 1156 $byte = 'KB'; 823 if ($ value[2]>= 1000) {824 $ value[2] = $value[2]/ 1000;1157 if ($max_file_size >= 1000) { 1158 $max_file_size = $max_file_size / 1000; 825 1159 $byte = 'MB'; 826 1160 } 827 $this->arrErr[$value[1]] = '※ ' . $value[0] . 'のファイルサイズは' . $value[2] . $byte . '以下のものを使用してください。<br />'; 1161 $this->arrErr[$keyname] = sprintf( 1162 '※ %sのファイルサイズは%d%s以下のものを使用してください。<br />', 1163 $disp_name, 1164 $max_file_size, 1165 $byte 1166 ); 828 1167 } 829 1168 } … … 834 1173 public function FILE_NAME_CHECK($value) 835 1174 { 836 if (isset($this->arrErr[$value[1]])) { 837 return; 838 } 839 $this->createParam($value); 840 if (strlen($_FILES[$value[1]]['name']) > 0 && !preg_match("/^[[:alnum:]_\.-]+$/i", $_FILES[$value[1]]['name'])) { 841 $this->arrErr[$value[1]] = '※ ' . $value[0] . "のファイル名には、英数字、記号(_ - .)のみを入力して下さい。<br />"; 1175 $disp_name = $value[0]; 1176 $keyname = $value[1]; 1177 1178 if (isset($this->arrErr[$keyname])) { 1179 return; 1180 } 1181 1182 $this->createParam($value); 1183 1184 $filename = $_FILES[$keyname]['name']; 1185 $pattern = "/^[[:alnum:]_\.-]+$/i"; 1186 if (strlen($filename) > 0 && !preg_match($pattern, $filename)) { 1187 $this->arrErr[$keyname] = 1188 "※ {$disp_name}のファイル名には、英数字、記号(_ - .)のみを入力して下さい。<br />"; 842 1189 } 843 1190 } … … 848 1195 public function FILE_NAME_CHECK_BY_NOUPLOAD($value) 849 1196 { 850 if (isset($this->arrErr[$value[1]])) { 851 return; 852 } 853 $this->createParam($value); 854 if (strlen($this->arrParam[$value[1]]) > 0 && preg_match("/[^[:alnum:]_.\\-]/", $this->arrParam[$value[1]])) { 855 $this->arrErr[$value[1]] = '※ ' . $value[0] . "のファイル名には、英数字、記号(_ - .)のみを入力して下さい。<br />"; 1197 $disp_name = $value[0]; 1198 $keyname = $value[1]; 1199 1200 if (isset($this->arrErr[$keyname])) { 1201 return; 1202 } 1203 1204 $this->createParam($value); 1205 1206 $filename = $this->arrParam[$keyname]; 1207 $pattern = "/[^[:alnum:]_.\\-]/"; 1208 if (strlen($filename) > 0 && preg_match($pattern, $filename)) { 1209 $this->arrErr[$keyname] = 1210 "※ {$disp_name}のファイル名には、英数字、記号(_ - .)のみを入力して下さい。<br />"; 856 1211 } 857 1212 } … … 864 1219 public function CHECK_DATE($value) 865 1220 { 866 if (isset($this->arrErr[$value[1]])) { 867 return; 868 } 869 $this->createParam($value); 1221 $disp_name = $value[0]; 1222 $keyname = $value[1]; 1223 1224 if (isset($this->arrErr[$keyname])) { 1225 return; 1226 } 1227 1228 $this->createParam($value); 1229 1230 $input_year = $this->arrParam[$value[1]]; 1231 $input_month = $this->arrParam[$value[2]]; 1232 $input_day = $this->arrParam[$value[3]]; 870 1233 // 少なくともどれか一つが入力されている。 871 if ($ this->arrParam[$value[1]] > 0 || $this->arrParam[$value[2]] > 0 || $this->arrParam[$value[3]]> 0) {1234 if ($input_year > 0 || $input_month > 0 || $input_day > 0) { 872 1235 // 年月日のどれかが入力されていない。 873 if (!(strlen($this->arrParam[$value[1]]) > 0 && strlen($this->arrParam[$value[2]]) > 0 && strlen($this->arrParam[$value[3]]) > 0)) { 874 $this->arrErr[$value[1]] = '※ ' . $value[0] . 'は全ての項目を入力して下さい。<br />'; 875 } elseif (! checkdate($this->arrParam[$value[2]], $this->arrParam[$value[3]], $this->arrParam[$value[1]])) { 876 $this->arrErr[$value[1]] = '※ ' . $value[0] . 'が正しくありません。<br />'; 1236 if (!(strlen($input_year) > 0 && strlen($input_month) > 0 && strlen($input_day) > 0)) { 1237 $this->arrErr[$keyname] = 1238 "※ {$disp_name}は全ての項目を入力して下さい。<br />"; 1239 } elseif (!checkdate($input_month, $input_day, $input_year)) { 1240 $this->arrErr[$keyname] = 1241 "※ {$disp_name}が正しくありません。<br />"; 877 1242 } 878 1243 } … … 888 1253 public function CHECK_DATE2($value) 889 1254 { 890 if (isset($this->arrErr[$value[1]])) { 891 return; 892 } 893 $this->createParam($value); 1255 $disp_name = $value[0]; 1256 $keyname = $value[1]; 1257 1258 if (isset($this->arrErr[$keyname])) { 1259 return; 1260 } 1261 1262 $this->createParam($value); 1263 1264 $input_year = $this->arrParam[$value[1]]; 1265 $input_month = $this->arrParam[$value[2]]; 1266 $input_day = $this->arrParam[$value[3]]; 1267 $input_hour = $this->arrParam[$value[4]]; 1268 $input_minute = $this->arrParam[$value[5]]; 894 1269 // 少なくともどれか一つが入力されている。 895 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) { 1270 if ($input_year > 0 || $input_month > 0 || $input_day > 0 1271 || $input_hour >= 0 || $input_minute >= 0 1272 ) { 896 1273 // 年月日時のどれかが入力されていない。 897 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)) { 898 $this->arrErr[$value[1]] = '※ ' . $value[0] . 'は全ての項目を入力して下さい。<br />'; 899 } elseif (! checkdate($this->arrParam[$value[2]], $this->arrParam[$value[3]], $this->arrParam[$value[1]])) { 900 $this->arrErr[$value[1]] = '※ ' . $value[0] . 'が正しくありません。<br />'; 1274 if (!(strlen($input_year) > 0 && strlen($input_month) > 0 && strlen($input_day) > 0 && strlen($input_hour) > 0 && strlen($input_minute) > 0)) { 1275 $this->arrErr[$keyname] = 1276 "※ {$disp_name}は全ての項目を入力して下さい。<br />"; 1277 } elseif (! checkdate($input_month, $input_day, $input_year)) { 1278 $this->arrErr[$keyname] = 1279 "※ {$disp_name}が正しくありません。<br />"; 901 1280 } 902 1281 } … … 909 1288 public function CHECK_DATE3($value) 910 1289 { 911 if (isset($this->arrErr[$value[1]])) { 912 return; 913 } 914 $this->createParam($value); 1290 $disp_name = $value[0]; 1291 $keyname = $value[1]; 1292 1293 if (isset($this->arrErr[$keyname])) { 1294 return; 1295 } 1296 1297 $this->createParam($value); 1298 1299 $input_year = $this->arrParam[$value[1]]; 1300 $input_month = $this->arrParam[$value[2]]; 915 1301 // 少なくともどれか一つが入力されている。 916 if ($ this->arrParam[$value[1]] > 0 || $this->arrParam[$value[2]]> 0) {1302 if ($input_year > 0 || $input_month > 0) { 917 1303 // 年月日時のどれかが入力されていない。 918 if (!(strlen($this->arrParam[$value[1]]) > 0 && strlen($this->arrParam[$value[2]]) > 0)) { 919 $this->arrErr[$value[1]] = '※ ' . $value[0] . 'は全ての項目を入力して下さい。<br />'; 920 } elseif (! checkdate($this->arrParam[$value[2]], 1, $this->arrParam[$value[1]])) { 921 $this->arrErr[$value[1]] = '※ ' . $value[0] . 'が正しくありません。<br />'; 1304 if (!(strlen($input_year) > 0 && strlen($input_month) > 0)) { 1305 $this->arrErr[$keyname] = 1306 "※ {$disp_name}は全ての項目を入力して下さい。<br />"; 1307 } elseif (! checkdate($input_month, 1, $input_year)) { 1308 $this->arrErr[$keyname] = 1309 "※ {$disp_name}が正しくありません。<br />"; 922 1310 } 923 1311 } … … 931 1319 public function CHECK_BIRTHDAY($value) 932 1320 { 933 if (isset($this->arrErr[$value[1]])) { 934 return; 935 } 936 937 $this->createParam($value); 1321 $disp_name = $value[0]; 1322 $keyname = $value[1]; 1323 1324 if (isset($this->arrErr[$keyname])) { 1325 return; 1326 } 1327 1328 $this->createParam($value); 1329 938 1330 // 年が入力されている。 939 if (strlen($this->arrParam[$ value[1]]) >= 1) {1331 if (strlen($this->arrParam[$keyname]) >= 1) { 940 1332 // 年の数字チェック、最小数値制限チェック 941 $this->doFunc(array($value[0].'(年)', $value[1], BIRTH_YEAR), array('NUM_CHECK', 'MIN_CHECK')); 1333 $this->doFunc(array("{$disp_name}(年)", $keyname, BIRTH_YEAR), 1334 array('NUM_CHECK', 'MIN_CHECK')); 942 1335 // 上のチェックでエラーある場合、中断する。 943 if (isset($this->arrErr[$ value[1]])) {1336 if (isset($this->arrErr[$keyname])) { 944 1337 return; 945 1338 } 946 1339 947 1340 // 年の最大数値制限チェック 948 $this->doFunc(array($value[0].'(年)', $value[1], date('Y', strtotime('now'))), array('MAX_CHECK')); 1341 $current_year = date('Y', strtotime('now')); 1342 $this->doFunc(array("{$disp_name}(年)", $keyname, $current_year), 1343 array('MAX_CHECK')); 949 1344 // 上のチェックでエラーある場合、中断する。 950 if (isset($this->arrErr[$ value[1]])) {1345 if (isset($this->arrErr[$keyname])) { 951 1346 return; 952 1347 } … … 976 1371 public function CHECK_SET_TERM($value) 977 1372 { 1373 $disp_name1 = $value[0]; 1374 $disp_name2 = $value[1]; 1375 $keyname1 = $value[2]; 1376 $keyname2 = $value[5]; 1377 978 1378 // 期間指定 979 if (isset($this->arrErr[$value[2]]) || isset($this->arrErr[$value[5]])) { 980 return; 981 } 1379 if (isset($this->arrErr[$keyname1]) || isset($this->arrErr[$keyname2])) { 1380 return; 1381 } 1382 982 1383 // $this->createParam($value); 983 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]])) { 984 $this->arrErr[$value[2]] = '※ ' . $value[0] . 'を正しく指定してください。<br />'; 985 } 986 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]])) { 987 $this->arrErr[$value[5]] = '※ ' . $value[1] . 'を正しく指定してください。<br />'; 988 } 989 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)) { 990 $date1 = $this->arrParam[$value[2]] .sprintf('%02d', $this->arrParam[$value[3]]) .sprintf('%02d', $this->arrParam[$value[4]]) .'000000'; 991 $date2 = $this->arrParam[$value[5]] .sprintf('%02d', $this->arrParam[$value[6]]) .sprintf('%02d', $this->arrParam[$value[7]]) .'235959'; 992 993 if (($this->arrErr[$value[2]] == '' && $this->arrErr[$value[5]] == '') && $date1 > $date2) { 994 $this->arrErr[$value[2]] = '※ ' .$value[0]. 'と' .$value[1]. 'の期間指定が不正です。<br />'; 1384 1385 $start_year = $this->arrParam[$value[2]]; 1386 $start_month = $this->arrParam[$value[3]]; 1387 $start_day = $this->arrParam[$value[4]]; 1388 $end_year = $this->arrParam[$value[5]]; 1389 $end_month = $this->arrParam[$value[6]]; 1390 $end_day = $this->arrParam[$value[7]]; 1391 if ((strlen($start_year) > 0 || strlen($start_month) > 0 || strlen($start_day) > 0) 1392 && ! checkdate($start_month, $start_day, $start_year) 1393 ) { 1394 $this->arrErr[$keyname1] = 1395 "※ {$disp_name1}を正しく指定してください。<br />"; 1396 } 1397 if ((strlen($end_year) > 0 || strlen($end_month) > 0 || strlen($end_day) > 0) 1398 && ! checkdate($end_month, $end_day, $end_year) 1399 ) { 1400 $this->arrErr[$keyname2] = 1401 "※ {$disp_name2}を正しく指定してください。<br />"; 1402 } 1403 if ((strlen($start_year) > 0 && strlen($start_month) > 0 && strlen($start_day) > 0) 1404 && (strlen($end_year) > 0 || strlen($end_month) > 0 || strlen($end_day) > 0) 1405 ) { 1406 $date1 = sprintf('%d%02d%02d000000', $start_year, $start_month, $start_day); 1407 $date2 = sprintf('%d%02d%02d235959', $end_year, $end_month, $end_day); 1408 1409 if (($this->arrErr[$keyname1] == '' && $this->arrErr[$keyname2] == '') && $date1 > $date2) { 1410 $this->arrErr[$keyname1] = 1411 "※ {$disp_name1}と{$disp_name2}の期間指定が不正です。<br />"; 995 1412 } 996 1413 } … … 1025 1442 public function CHECK_SET_TERM2($value) 1026 1443 { 1444 $disp_name1 = $value[0]; 1445 $disp_name2 = $value[1]; 1446 $keyname1 = $value[2]; 1447 $keyname2 = $value[8]; 1448 1027 1449 // 期間指定 1028 if (isset($this->arrErr[$value[2]]) || isset($this->arrErr[$value[8]])) { 1029 return; 1030 } 1450 if (isset($this->arrErr[$keyname1]) || isset($this->arrErr[$keyname2])) { 1451 return; 1452 } 1453 1031 1454 // $this->createParam($value); 1032 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]])) { 1033 $this->arrErr[$value[2]] = '※ ' . $value[0] . 'を正しく指定してください。<br />'; 1034 } 1035 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]])) { 1036 $this->arrErr[$value[8]] = '※ ' . $value[1] . 'を正しく指定してください。<br />'; 1037 } 1038 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)) { 1039 $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]]); 1040 $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]]); 1041 1042 if (($this->arrErr[$value[2]] == '' && $this->arrErr[$value[8]] == '') && $date1 > $date2) { 1043 $this->arrErr[$value[2]] = '※ ' .$value[0]. 'と' .$value[1]. 'の期間指定が不正です。<br />'; 1455 1456 $start_year = $this->arrParam[$value[2]]; 1457 $start_month = $this->arrParam[$value[3]]; 1458 $start_day = $this->arrParam[$value[4]]; 1459 $start_hour = $this->arrParam[$value[5]]; 1460 $start_minute = $this->arrParam[$value[6]]; 1461 $start_second = $this->arrParam[$value[7]]; 1462 $end_year = $this->arrParam[$value[8]]; 1463 $end_month = $this->arrParam[$value[9]]; 1464 $end_day = $this->arrParam[$value[10]]; 1465 $end_hour = $this->arrParam[$value[11]]; 1466 $end_minute = $this->arrParam[$value[12]]; 1467 $end_second = $this->arrParam[$value[13]]; 1468 if ((strlen($start_year) > 0 || strlen($start_month) > 0 || strlen($start_day) > 0 || strlen($start_hour) > 0) 1469 && ! checkdate($start_month, $start_day, $start_year) 1470 ) { 1471 $this->arrErr[$keyname1] = 1472 "※ {$disp_name1}を正しく指定してください。<br />"; 1473 } 1474 if ((strlen($end_year) > 0 || strlen($end_month) > 0 || strlen($end_day) > 0 || strlen($end_hour) > 0) 1475 && ! checkdate($end_month, $end_day, $end_year) 1476 ) { 1477 $this->arrErr[$keyname2] = 1478 "※ {$disp_name2}を正しく指定してください。<br />"; 1479 } 1480 if ((strlen($start_year) > 0 && strlen($start_month) > 0 && strlen($start_day) > 0 && strlen($start_hour) > 0) 1481 && (strlen($end_year) > 0 || strlen($end_month) > 0 || strlen($end_day) > 0 || strlen($end_hour) > 0) 1482 ) { 1483 $date1 = sprintf('%d%02d%02d%02d%02d%02d', 1484 $start_year, $start_month, $start_day, 1485 $start_hour, $start_minute, $start_second); 1486 $date2 = sprintf('%d%02d%02d%02d%02d%02d', 1487 $end_year, $end_month, $end_day, 1488 $end_hour, $end_minute, $end_second); 1489 1490 if (($this->arrErr[$keyname1] == '' && $this->arrErr[$keyname2] == '') && $date1 > $date2) { 1491 $this->arrErr[$keyname1] = 1492 "※ {$disp_name1}と{$disp_name2}の期間指定が不正です。<br />"; 1044 1493 } 1045 1494 if ($date1 == $date2) { 1046 $this->arrErr[$value[2]] = '※ ' .$value[0]. 'と' .$value[1]. 'の期間指定が不正です。<br />'; 1495 $this->arrErr[$keyname1] = 1496 "※ {$disp_name1}と{$disp_name2}の期間指定が不正です。<br />"; 1047 1497 } 1048 1498 … … 1067 1517 public function CHECK_SET_TERM3($value) 1068 1518 { 1519 $disp_name1 = $value[0]; 1520 $disp_name2 = $value[1]; 1521 $keyname1 = $value[2]; 1522 $keyname2 = $value[4]; 1523 1069 1524 // 期間指定 1070 if (isset($this->arrErr[$value[2]]) || isset($this->arrErr[$value[4]])) { 1071 return; 1072 } 1525 if (isset($this->arrErr[$keyname1]) || isset($this->arrErr[$keyname2])) { 1526 return; 1527 } 1528 1073 1529 // $this->createParam($value); 1074 if ((strlen($this->arrParam[$value[2]]) > 0 || strlen($this->arrParam[$value[3]]) > 0) && ! checkdate($this->arrParam[$value[3]], 1, $this->arrParam[$value[2]])) { 1075 $this->arrErr[$value[2]] = '※ ' . $value[0] . 'を正しく指定してください。<br />'; 1076 } 1077 if ((strlen($this->arrParam[$value[4]]) > 0 || strlen($this->arrParam[$value[5]]) > 0) && ! checkdate($this->arrParam[$value[5]], 1, $this->arrParam[$value[4]])) { 1078 $this->arrErr[$value[4]] = '※ ' . $value[1] . 'を正しく指定してください。<br />'; 1079 } 1080 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))) { 1081 $date1 = $this->arrParam[$value[2]] .sprintf('%02d', $this->arrParam[$value[3]]); 1082 $date2 = $this->arrParam[$value[4]] .sprintf('%02d', $this->arrParam[$value[5]]); 1083 1084 if (($this->arrErr[$value[2]] == '' && $this->arrErr[$value[5]] == '') && $date1 > $date2) { 1085 $this->arrErr[$value[2]] = '※ ' .$value[0]. 'と' .$value[1]. 'の期間指定が不正です。<br />'; 1530 1531 $start_year = $this->arrParam[$value[2]]; 1532 $start_month = $this->arrParam[$value[3]]; 1533 $end_year = $this->arrParam[$value[4]]; 1534 $end_month = $this->arrParam[$value[5]]; 1535 if ((strlen($start_year) > 0 || strlen($start_month) > 0) 1536 && ! checkdate($start_month, 1, $start_year) 1537 ) { 1538 $this->arrErr[$keyname1] = 1539 "※ {$disp_name1}を正しく指定してください。<br />"; 1540 } 1541 if ((strlen($end_year) > 0 || strlen($end_month) > 0) 1542 && ! checkdate($end_month, 1, $end_year) 1543 ) { 1544 $this->arrErr[$keyname2] = 1545 "※ {$disp_name2}を正しく指定してください。<br />"; 1546 } 1547 if ((strlen($start_year) > 0 && strlen($start_month) > 0 && (strlen($end_year) > 0 || strlen($end_month) > 0))) { 1548 $date1 = sprintf('%d%02d', $start_year, $start_month); 1549 $date2 = sprintf('%d%02d', $end_year, $end_month); 1550 1551 if (($this->arrErr[$keyname1] == '' && $this->arrErr[$keyname2] == '') && $date1 > $date2) { 1552 $this->arrErr[$keyname1] = 1553 "※ {$disp_name1}と{$disp_name2}の期間指定が不正です。<br />"; 1086 1554 } 1087 1555 } … … 1091 1559 public function DIR_CHECK($value) 1092 1560 { 1093 if (isset($this->arrErr[$value[1]])) { 1094 return; 1095 } 1096 $this->createParam($value); 1097 if (!is_dir($this->arrParam[$value[1]])) { 1098 $this->arrErr[$value[1]] = '※ 指定した' . $value[0] . 'は存在しません。<br />'; 1561 $disp_name = $value[0]; 1562 $keyname = $value[1]; 1563 1564 if (isset($this->arrErr[$keyname])) { 1565 return; 1566 } 1567 1568 $this->createParam($value); 1569 1570 if (!is_dir($this->arrParam[$keyname])) { 1571 $this->arrErr[$keyname] = 1572 "※ 指定した{$disp_name}は存在しません。<br />"; 1099 1573 } 1100 1574 } … … 1103 1577 public function DOMAIN_CHECK($value) 1104 1578 { 1105 if (isset($this->arrErr[$value[1]])) { 1106 return; 1107 } 1108 if (strlen($this->arrParam[$value[1]]) > 0 && !preg_match("/^\.[^.]+\..+/i", $this->arrParam[$value[1]])) { 1109 $this->arrErr[$value[1]] = '※ ' . $value[0] . 'の形式が不正です。<br />'; 1579 $disp_name = $value[0]; 1580 $keyname = $value[1]; 1581 1582 if (isset($this->arrErr[$keyname])) { 1583 return; 1584 } 1585 1586 $input_var = $this->arrParam[$keyname]; 1587 $pattern = "/^\.[^.]+\..+/i"; 1588 if (strlen($input_var) > 0 && !preg_match($pattern, $input_var)) { 1589 $this->arrErr[$keyname] = "※ {$disp_name}の形式が不正です。<br />"; 1110 1590 } 1111 1591 } … … 1116 1596 public function MOBILE_EMAIL_CHECK($value) 1117 1597 { 1118 if (isset($this->arrErr[$value[1]])) { 1119 return; 1120 } 1121 $this->createParam($value); 1598 $disp_name = $value[0]; 1599 $keyname = $value[1]; 1600 1601 if (isset($this->arrErr[$keyname])) { 1602 return; 1603 } 1604 1605 $this->createParam($value); 1606 1122 1607 $objMobile = new SC_Helper_Mobile_Ex(); 1123 if (strlen($this->arrParam[$value[1]]) > 0 && !$objMobile->gfIsMobileMailAddress($this->arrParam[$value[1]])) { 1124 $this->arrErr[$value[1]] = '※ ' . $value[0] . 'は携帯電話のものではありません。<br />'; 1608 $input_var = $this->arrParam[$keyname]; 1609 if (strlen($input_var) > 0 1610 &&!$objMobile->gfIsMobileMailAddress($input_var) 1611 ) { 1612 $this->arrErr[$keyname] = 1613 "※ {$disp_name}は携帯電話のものではありません。<br />"; 1125 1614 } 1126 1615 } … … 1136 1625 public function CHECK_REGIST_CUSTOMER_EMAIL($value) 1137 1626 { 1138 if (isset($this->arrErr[$value[1]])) { 1139 return; 1140 } 1141 $this->createParam($value); 1142 1143 $register_user_flg = SC_Helper_Customer_Ex::sfCheckRegisterUserFromEmail($this->arrParam[$value[1]]); 1627 $disp_name = $value[0]; 1628 $keyname = $value[1]; 1629 1630 if (isset($this->arrErr[$keyname])) { 1631 return; 1632 } 1633 1634 $this->createParam($value); 1635 1636 $register_user_flg = SC_Helper_Customer_Ex::sfCheckRegisterUserFromEmail($this->arrParam[$keyname]); 1144 1637 switch ($register_user_flg) { 1145 1638 case 1: 1146 $this->arrErr[$value[1]] .= '※ すでに会員登録で使用されている' . $value[0] . 'です。<br />'; 1639 $this->arrErr[$keyname] .= 1640 "※ すでに会員登録で使用されている{$disp_name}です。<br />"; 1147 1641 break; 1148 1642 case 2: 1149 $this->arrErr[$value[1]] .= '※ 退会から一定期間の間は、同じ' . $value[0] . 'を使用することはできません。<br />'; 1643 $this->arrErr[$keyname] .= 1644 "※ 退会から一定期間の間は、同じ{$disp_name}を使用することはできません。<br />"; 1150 1645 break; 1151 1646 default: … … 1163 1658 public function PROHIBITED_STR_CHECK($value) 1164 1659 { 1165 if (isset($this->arrErr[$value[1]]) || empty($this->arrParam[$value[1]])) { 1166 return; 1167 } 1168 $this->createParam($value); 1169 $targetStr = $this->arrParam[$value[1]]; 1170 $prohibitedStr = str_replace(array('|', '/'), array('\|', '\/'), $value[2]); 1660 $disp_name = $value[0]; 1661 $keyname = $value[1]; 1662 $arrProhibitedStr = $value[2]; 1663 1664 if (isset($this->arrErr[$keyname]) || empty($this->arrParam[$keyname])) { 1665 return; 1666 } 1667 1668 $this->createParam($value); 1669 1670 $targetStr = $this->arrParam[$keyname]; 1671 $prohibitedStr = str_replace(array('|', '/'), array('\|', '\/'), $arrProhibitedStr); 1171 1672 1172 1673 $pattern = '/' . join('|', $prohibitedStr) . '/i'; 1173 1674 if (preg_match_all($pattern, $targetStr, $matches)) { 1174 $this->arrErr[$value[1]] = '※ ' . $value[0] . 'は入力できません。<br />'; 1675 $this->arrErr[$keyname] = 1676 "※ {$disp_name}は入力できません。<br />"; 1175 1677 } 1176 1678 } … … 1185 1687 public function EVAL_CHECK($value) 1186 1688 { 1187 if (isset($this->arrErr[$value[0]])) { 1188 return; 1189 } 1689 $keyname = $value[0]; 1690 $input_var = $value[1]; 1691 1692 if (isset($this->arrErr[$keyname])) { 1693 return; 1694 } 1695 1190 1696 // $this->createParam($value); 1191 if ($this->evalCheck($value[1]) === false) { 1192 $this->arrErr[$value[0]] = '※ ' . $value[0] . ' の形式が不正です。<br />'; 1697 1698 if ($this->evalCheck($input_var) === false) { 1699 $this->arrErr[$keyname] = 1700 "※ {$keyname} の形式が不正です。<br />"; 1193 1701 } 1194 1702 }
Note: See TracChangeset
for help on using the changeset viewer.