해피정

PHP 숫자 입력 유효성 체크

제작이유 :  스팸 게시글로 인하여 주문게시판이 오염됨
글작성자 :  해피정
제작방향 :
form 문서에서 넘어온 특정값이 숫자만 입력 (예를 들어 전화번호 등)만 넘어오는것을 고려하여  넘어온 값이 숫자만  온것인지 혹은 문자가 혼재된 것인지 체크

is_int , intval 등 각종 숫자 점검하는 PHP 함수를 사용하려 했으나 실패...
특히 is_int 함수의 경우   is_int(숫자) 인 경우 올바르게 작동하지만..  is_int($aaa) 와 같이 변수로 넘겨받는 경우  무조건 문자로 인식하는 버그가 발견됨...

자바스크립트가 아닌 php 페이지에서 체크하는 로직은 없는것 같아서 2일간 구글링 끝에 아래와 같이 정리하게 되었습니다.

더 좋은 방법이나 오류가 있음 조언 부탁드립니다.  감사합니다.


<%
/*
// 3-1. 숫자만 입력받기 , preg_match 활용
*/
if ( preg_match("/^([0-9]*){3,15}$/", $_POST[aaa]) ) {
  echo "this is a integer 정수입니다.";
} else {
  echo "this is a string 문자입니다";
}

/*
// 3-2. 숫자만 입력받기 , is_int 활용  , PHP 버그로 오작동
// 테스트 :  PHP 4.4.7  ,  PHP 5.2.9
*/
// 상황1 : 오작동
if (is_int($_POST[aaa]))
  echo "is_int 1 = 정수 this is a integer <br>";
else
  echo "is_int 1 = 문자 this is a string <br>";
// 상황2 : 오작동
$aaa = $_POST[aaa];
if (is_int($aaa))
  echo "is_int 2 = 정수 this is a integer <br>";
else
  echo "is_int 2 = 문자 this is a string <br>";
// 상황3 : 정상
if (is_int(111))
  echo "is_int 3 = 정수 this is a integer <br>";
else
  echo "is_int 3 = 문자 this is a string <br>";
%>
[이 게시물은 관리자님에 의해 2011-10-31 17:16:08 PHP & HTML에서 이동 됨]
|

댓글 2개

http://gnucomun.net/sp/freetalk.26.1
제가 좋아하는 꽁수입니다~ ㅋㅋ
<?
if($_POST[aaa] == intval($_POST[aaa])) echo "$_POST[aaa] is an integer";
echo "$_POST[aaa] ISN't n integer";
?>
댓글을 작성하시려면 로그인이 필요합니다.

프로그램

8,188건
+
제목 글쓴이 날짜 조회
12-08-29 조회 4,108
12-08-07 조회 3,777
12-08-03 조회 3,594
12-07-31 조회 3,689
12-07-30 조회 3,644
12-07-16 조회 3,868
12-07-15 조회 3,657
12-07-07 조회 3,537
12-07-06 조회 3,754
12-07-03 조회 3,707
12-06-29 조회 3,309
12-06-22 조회 3,689
12-06-17 조회 3,939
12-05-21 조회 3,851
12-05-02 조회 3,412
12-05-02 조회 4,213
12-05-02 조회 3,324
12-04-30 조회 3,508
12-04-30 조회 3,201
12-03-17 조회 4,053
12-03-10 조회 3,399
12-03-08 조회 3,922
12-03-03 조회 3,623
12-02-27 조회 5,035
12-02-17 조회 4,342
12-02-16 조회 4,599
12-02-03 조회 3,303
12-01-31 조회 3,207
12-01-24 조회 3,191
12-01-17 조회 3,899
12-01-05 조회 3,443
11-12-30 조회 3,181
11-12-23 조회 4,732
11-12-08 조회 3,463
11-12-07 조회 4,459
11-11-27 조회 3,863
11-11-25 조회 4,203
11-11-23 조회 3,655
11-11-22 조회 3,519
11-11-09 조회 3,225
11-10-23 조회 3,155
11-10-19 조회 3,118
11-10-08 조회 2,804
11-10-04 조회 2,812
11-10-04 조회 5,257
11-09-01 조회 4,333
11-08-13 조회 2,512
11-08-06 조회 3,193
11-07-11 조회 3,592
11-06-27 조회 2,963
11-06-21 조회 2,633
11-06-13 조회 2,430
11-06-07 조회 2,436
11-05-26 조회 2,409
11-04-20 조회 2,730
11-03-21 조회 2,823
11-03-18 조회 2,523
11-03-11 조회 2,544
11-02-07 조회 2,371
11-01-18 조회 2,691
11-01-12 조회 2,410
11-01-06 조회 2,517
10-12-10 조회 2,773
10-12-09 조회 2,614
10-12-08 조회 5,050
10-11-29 조회 2,731
10-11-28 조회 2,795
10-11-28 조회 2,634
10-11-19 조회 2,819
10-11-04 조회 2,703
10-10-21 조회 2,428
10-10-19 조회 3,371
10-10-12 조회 2,697
10-10-07 조회 2,531
10-09-30 조회 3,488
10-09-17 조회 3,896
10-09-17 조회 3,846
10-05-31 조회 3,544
09-12-31 조회 3,672
09-07-23 조회 5,000
08-09-16 조회 3,213
08-09-06 조회 2,961
08-09-04 조회 3,371
08-08-16 조회 4,418
08-08-15 조회 3,287
08-08-14 조회 4,498
08-08-12 조회 3,973
08-07-23 조회 2,792
08-07-10 조회 3,737
08-07-04 조회 2,958
08-06-27 조회 7,600
08-06-19 조회 4,902
08-05-27 조회 5,514
08-05-25 조회 5,344
08-05-23 조회 3,418
08-05-23 조회 4,577
08-05-21 조회 4,937
08-05-20 조회 4,063
08-05-20 조회 3,288
08-04-18 조회 4,336