php_php 팁에서 정규식을 사용하여 숫자인지 확인하는 방법

WBOY
풀어 주다: 2016-05-16 19:55:41
원래의
1370명이 탐색했습니다.

이틀 전, 누군가 친구의 홈페이지에 플래시 게임 점수를 제출하기 위해 PHP 인젝션을 사용했는데, 나중에 원인을 찾아보니 수치 판단을 하지 않는 매개변수에 의해 발생했다는 사실을 알게 되었습니다.

원래 게임 점수 저장은 game.php?ac=save&fgid=1 형식으로 구현됩니다. fgid는 필터링 없이 PHP 웹페이지에서 직접 호출됩니다. 많은 사람들이 일부 불법적인 작업을 수행하기 위해 fgid=1 뒤에 문자(fgid=1a)를 추가하는 것을 사용합니다.

gamlist 테이블에 fgid가 102인 게임이 있다고 가정합니다
fgid='102′;
인 게임 목록에서 gname을 선택하세요. fgid='102a';
인 게임 목록에서 gname을 선택하세요. 이런 식으로 많은 사람들에게 기회를 제공하는 게임명 gname을 성공적으로 찾을 수 있습니다

주요 매개변수를 필터링하는 것이 좋습니다. 디지털 정규 필터링 등

코드 복사 코드는 다음과 같습니다.

if(preg_match("/^d*$/",$fgid)) echo('숫자입니다');
else echo('숫자가 아님');

또는 기능을 사용하세요
코드 복사 코드는 다음과 같습니다.

if(is_numeric($fgid)) echo('숫자입니다');
else echo('숫자가 아님');

ID가 숫자인지 확인하는 온라인 방법

코드 복사 코드는 다음과 같습니다.

$cid = 비어 있음($cid)? 1 : intval(preg_replace("/[^-d] [^d]/",'', $cid));

이 두 방법의 차이점은 is_numeric은 소수도 숫자로 처리하는 반면, 이전 정규식은 소수점을 문자로 처리한다는 것입니다.

일반적으로 사용되는 몇 가지 정규 작업을 첨부했습니다.

인증번호: ^[0-9]*$
n자리 숫자 확인: ^d{n}$
n개 이상의 숫자를 확인하세요: ^d{n,}$
m-n 자리 숫자 확인: ^d{m,n}$
0으로 시작하고 0이 아닌 숫자 확인: ^(0|[1-9][0-9]*)$
소수점 이하 두 자리로 양의 실수를 확인하세요: ^[0-9] (.[0-9]{2})?$
소수점 이하 1~3자리의 양수 실수 확인: ^[0-9] (.[0-9]{1,3})?$
0이 아닌 양의 정수 확인: ^?[1-9][0-9]*$
0이 아닌 음의 정수 확인: ^-[1-9][0-9]*$
음수가 아닌 정수(양의 정수 0) 확인 ^d $
양수가 아닌 정수(음의 정수 0) 확인 ^((-d )|(0 ))$
길이가 3인 문자 확인: ^.{3}$
영문 26자로 구성된 문자열 확인: ^[A-Za-z] $
영문 대문자 26자로 구성된 문자열 확인: ^[A-Z] $
영문 소문자 26자로 구성된 문자열 확인: ^[a-z] $
숫자와 영문 26자로 구성된 문자열 확인: ^[A-Za-z0-9] $
숫자, 영문 26자, 밑줄로 구성된 문자열 확인: ^w $
사용자 비밀번호 확인: ^[a-zA-Z]w{5,17}$ 올바른 형식은 문자로 시작하고 길이는 6-18이며 문자, 숫자 및 밑줄만 포함할 수 있습니다.
^%&',;=?$'와 같은 문자가 포함되어 있는지 확인하세요: [^%&',;=?$x22]
한자 확인: ^[u4e00-u9fa5],{0,}$
이메일 주소 확인: ^w [- .]w )*@w ([-.]w )*.w ([-.]w )*$
인터넷 URL 확인: ^http://([w-] .) [w-] (/[w-./?%&=]*)?$ ^[a-zA-z] ://(w ( -w )*)(.(w (-w )*))*(?S*)?$
확인 전화번호: ^((d{3,4})|d{3,4}-)?d{7,8}$: – 올바른 형식은 다음과 같습니다: XXXX-XXXXXXX, XXXX-XXXXXXXXX, XXX-XXXXXXX, XXX -XXXXXXXX, XXXXXXX, XXXXXXXX.
ID 번호 확인(15 또는 18자리): ^d{15}|d{}18$
1년의 12개월을 확인하세요. ^(0?[1-9]|1[0-2])$ 올바른 형식은 다음과 같습니다: "01"-"09" 및 "1" "12"
한 달이 31일인지 확인하세요. ^((0?[1-9])|((1|2)[0-9])|30|31)$ 올바른 형식은 01, 09 및 1, 31입니다. .
정수: ^-?d $
음수가 아닌 부동 소수점 수(양수 부동 소수점 수 0): ^d (.d )?$
양의 부동 소수점 숫자 ^(([0-9] .[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]* . [0-9] )|([0-9]*[1-9][0-9]*))$
양수가 아닌 부동 소수점 수(음수 부동 소수점 수 0) ^((-d (.d )?)|(0 (.0 )?))$
음의 부동 소수점 숫자 ^(-(([0-9] .[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9 ] *.[0-9] )|([0-9]*[1-9][0-9]*)))$
부동 소수점 숫자 ^(-?d )(.d )?

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!