PHP 유효성 검사
페이지 정보
본문
<?php
/*
// 1-1. 이름 체크 ( euc-kr )
// 1-2. 이름 체크 ( UTF-8 )
// 2. 주민등록번호 유효성 검사: 올바른 경우 true, 틀린 경우 false 반환
// 3-1. 숫자만 입력받기 , preg_match 활용
// 3-2. 숫자만 입력받기 , is_int 활용
*/
*
// 1-1. 이름 체크 ( euc-kr )
*/
if ( !preg_match("/^([가-힣a-zA-Z]+[0-9]*){3,15}$/", $_POST["name"]) ) {
}
/*
// 1-2. 이름 체크 ( UTF-8 )
*/
if ( !preg_match("/^([가-힣a-zA-Z]+[0-9]*){3,15}$/u", $_POST["name"]) ) {
}
/*
// 2. 주민등록번호 유효성 검사: 올바른 경우 true, 틀린 경우 false 반환
*/
function juminCheck($jumin1, $jumin2) {
$jumin = $jumin1 . $jumin2;
// 형태 검사: 총 13자리의 숫자, 7번째는 1..4의 값을 가짐
if (!ereg('^[[:digit:]]{6}[1-4][[:digit:]]{6}$', $jumin))
return false;
// 날짜 유효성 검사
$birthYear = ('2' >= $jumin[6]) ? '19' : '20';
$birthYear += substr($jumin, 0, 2);
$birthMonth = substr($jumin, 2, 2);
$birthDate = substr($jumin, 4, 2);
if (!checkdate($birthMonth, $birthDate, $birthYear))
return false;
// Checksum 코드의 유효성 검사
for ($i = 0; $i < 13; $i++) $buf[$i] = (int) $resno[$i];
$multipliers = array(2,3,4,5,6,7,8,9,2,3,4,5);
for ($i = $sum = 0; $i < 12; $i++) $sum += ($buf[$i] *= $multipliers[$i]);
if ((11 - ($sum % 11)) % 10 != $buf[12])
return false;
// 모든 검사를 통과하면 유효한 주민등록번호임
return true;
}
/*
// 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>";
// 3-3. intval 활용하기
// Input 값의 미입력 및 E-mail 입력 누락 체크 & 글자수 제한 작업후 저장 활용을 위해 만들었습니다.
if($_POST["tel1"] == intval($_POST["tel1"])) {
echo "$_POST["tel1"] is an integer";
}
if(intval($_POST["tel1"]) == 0) {
echo "$_POST["tel1"] is an integer";
}
if(intval($_POST["tel1"]) > 0 && intval($_POST["tel2"]) > 0 && intval($_POST["tel3"]) > 0) {
// 디비 저장~~
} else {
// alert 띄우면 스패머가 또다른 대응을 하니까 속임수
}
$tel_check = explode("-",$tel);
if(intval($tel_check[0]) > 0 && intval($tel_check[1]) > 0 && intval($tel_check[2]) > 0) {
// 디비 저장~~
} else {
// alert 띄우면 스패머가 또다른 대응을 하니까 속임수
}
?>
참고자료
http://www.liveware.kr/index.asp?cate=003003&type=view&num=190
http://us3.php.net/manual/en/function.is-int.php
http://gnucomun.net/bbs/board.php?bo_table=freetalk&wr_id=26
/*
// 1-1. 이름 체크 ( euc-kr )
// 1-2. 이름 체크 ( UTF-8 )
// 2. 주민등록번호 유효성 검사: 올바른 경우 true, 틀린 경우 false 반환
// 3-1. 숫자만 입력받기 , preg_match 활용
// 3-2. 숫자만 입력받기 , is_int 활용
*/
*
// 1-1. 이름 체크 ( euc-kr )
*/
if ( !preg_match("/^([가-힣a-zA-Z]+[0-9]*){3,15}$/", $_POST["name"]) ) {
}
/*
// 1-2. 이름 체크 ( UTF-8 )
*/
if ( !preg_match("/^([가-힣a-zA-Z]+[0-9]*){3,15}$/u", $_POST["name"]) ) {
}
/*
// 2. 주민등록번호 유효성 검사: 올바른 경우 true, 틀린 경우 false 반환
*/
function juminCheck($jumin1, $jumin2) {
$jumin = $jumin1 . $jumin2;
// 형태 검사: 총 13자리의 숫자, 7번째는 1..4의 값을 가짐
if (!ereg('^[[:digit:]]{6}[1-4][[:digit:]]{6}$', $jumin))
return false;
// 날짜 유효성 검사
$birthYear = ('2' >= $jumin[6]) ? '19' : '20';
$birthYear += substr($jumin, 0, 2);
$birthMonth = substr($jumin, 2, 2);
$birthDate = substr($jumin, 4, 2);
if (!checkdate($birthMonth, $birthDate, $birthYear))
return false;
// Checksum 코드의 유효성 검사
for ($i = 0; $i < 13; $i++) $buf[$i] = (int) $resno[$i];
$multipliers = array(2,3,4,5,6,7,8,9,2,3,4,5);
for ($i = $sum = 0; $i < 12; $i++) $sum += ($buf[$i] *= $multipliers[$i]);
if ((11 - ($sum % 11)) % 10 != $buf[12])
return false;
// 모든 검사를 통과하면 유효한 주민등록번호임
return true;
}
/*
// 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>";
// 3-3. intval 활용하기
// Input 값의 미입력 및 E-mail 입력 누락 체크 & 글자수 제한 작업후 저장 활용을 위해 만들었습니다.
if($_POST["tel1"] == intval($_POST["tel1"])) {
echo "$_POST["tel1"] is an integer";
}
if(intval($_POST["tel1"]) == 0) {
echo "$_POST["tel1"] is an integer";
}
if(intval($_POST["tel1"]) > 0 && intval($_POST["tel2"]) > 0 && intval($_POST["tel3"]) > 0) {
// 디비 저장~~
} else {
// alert 띄우면 스패머가 또다른 대응을 하니까 속임수
}
$tel_check = explode("-",$tel);
if(intval($tel_check[0]) > 0 && intval($tel_check[1]) > 0 && intval($tel_check[2]) > 0) {
// 디비 저장~~
} else {
// alert 띄우면 스패머가 또다른 대응을 하니까 속임수
}
?>
참고자료
http://www.liveware.kr/index.asp?cate=003003&type=view&num=190
http://us3.php.net/manual/en/function.is-int.php
http://gnucomun.net/bbs/board.php?bo_table=freetalk&wr_id=26
댓글목록
등록된 댓글이 없습니다.