>PHP 프레임워크 >ThinkPHP >thinkphp 나는 방법

thinkphp 나는 방법

藏色散人
藏色散人원래의
2019-08-19 14:12:532062검색

thinkphp 나는 방법

thinkphp i method

ThinkPHP의 I 메소드는 버전 3.1.3에서 새로 추가되었습니다. 이전 3.* 버전을 사용하는 경우 3.1 빠른 시작 튜토리얼 시리즈의 변수 부분을 직접 참조할 수 있습니다. .

개요

보시다시피 I 메소드는 ThinkPHP의 많은 단일 문자 함수 중 새로운 구성원으로, 이름은 영어 입력(input)에서 유래되었으며 주로 시스템 입력 변수를 보다 편리하고 안전하게 가져오는 데 사용됩니다. . , 어디에서나 사용할 수 있으며 사용 형식은 다음과 같습니다.

I('变量类型.变量名',['默认值'],['过滤方法'])

변수 유형은 다음을 포함하여 요청 방법 또는 입력 유형을 나타냅니다.

thinkphp 나는 방법

참고: 변수 유형은 대소문자를 구분하지 않습니다.

변수 이름은 대소문자를 엄격하게 구분합니다.

기본값과 필터링 방법은 선택적 매개변수입니다.

Usage

I 메소드의 사용법을 설명하기 위해 GET 변수 유형을 예로 들었습니다.

echo I('get.id'); // 相当于 $_GET['id']
echo I('get.name'); // 相当于 $_GET['name']

기본값 지원:

echo I('get.id',0); // 如果不存在$_GET['id'] 则返回0
echo I('get.name',''); // 如果不存在$_GET['name'] 则返回空字符串

메소드 필터링:

echo I('get.name','','htmlspecialchars'); // 采用htmlspecialchars方法对$_GET['name'] 进行过滤,如果不存在则返回空字符串

전체 변수 유형 직접 획득 지원 , 예:

I('get.'); // 获取整个$_GET 数组

동일한 방법으로 post 또는 기타 입력 유형의 변수를 얻을 수 있습니다. 예:

I('post.name','','htmlspecialchars'); // 采用htmlspecialchars方法对$_POST['name'] 进行过滤,如果不存在则返回空字符串
I('session.user_id',0); // 获取$_SESSION['user_id'] 如果不存在则默认为0
I('cookie.'); // 获取整个 $_COOKIE 数组
I('server.REQUEST_METHOD'); // 获取 $_SERVER['REQUEST_METHOD']

param 변수 유형은 현재 요청 유형의 자동 결정을 지원하는 프레임워크별 변수 획득 방법입니다. , 예:

echo I('param.id');

현재 요청 유형이 GET인 경우 $_GET['id']와 동일합니다. 현재 요청 유형이 POST 또는 PUT인 경우 $_POST['를 얻는 것과 같습니다. id'] 또는 PUT 매개변수 ID입니다.

그리고 매개변수 유형 변수는 숫자 인덱스를 사용하여 URL 매개변수를 얻을 수도 있습니다(PATHINFO 모드 매개변수는 GET이든 POST이든 유효해야 합니다). 예:

현재 액세스된 URL 주소는

http://serverName/index.php/New/2013/06/01

그런 다음 전달할 수 있습니다.

echo I('param.1'); // 输出2013
echo I('param.2'); // 输出06
echo I('param.3'); // 输出01

실제로 param 변수 유형의 작성 방법은 다음과 같이 단순화할 수 있습니다.

I('id'); // 等同于 I('param.id')
I('name'); // 等同于 I('param.name')

변수 필터링

I 메서드를 사용할 때 변수는 실제로 두 개의 필터를 거칩니다. 첫 번째는 전역 필터링으로 구성됩니다. 여기서 VAR_FILTERS 매개변수 구성 버전 3.1 이후에는 VAR_FILTERS 매개변수의 필터링 메커니즘이 array_walk_recursive 메서드를 사용하여 재귀적으로 필터링하도록 변경되었으므로 필터링 메서드의 주요 요구 사항은 참조로 반환되어야 한다는 것입니다. 여기서 htmlspecialchars를 설정하는 것은 유효하지 않습니다. 예를 들어,

function filter_default(&$value){
    $value = htmlspecialchars($value);
}

다음 구성:

'VAR_FILTERS'=>'filter_default'

여러 번 필터링해야 하는 경우 다음을 사용할 수 있습니다.

'VAR_FILTERS'=>'filter_default,filter_exp'

filter_exp 메소드는 내장된 보안 필터링 방법입니다. 프레임워크에서는 모델의 EXP 함수를 사용하여 주입 공격을 방지하는 데 사용됩니다.

VAR_FILTERS 매개변수는 전역 필터링 메커니즘을 설정하고 재귀 필터링을 사용하므로 효율성에 영향을 미치므로 I 메서드의 세 번째 매개변수에 필터링 방법을 설정하는 것 외에도 변수를 직접 필터링하는 것이 좋습니다. , DEFAULT_FILTER 매개변수를 구성하여 필터링을 설정할 수도 있습니다. 실제로 이 매개변수의 기본 설정은

'DEFAULT_FILTER'        => 'htmlspecialchars'

입니다. 즉, I 메서드의 모든 획득 변수는 htmlspecialchars로 필터링되고

I('get.name'); // 等同于 htmlspecialchars($_GET['name'])

입니다. 마찬가지로 이 매개변수는 여러 필터를 지원할 수도 있습니다. 예:

'DEFAULT_FILTER'        => 'strip_tags,htmlspecialchars'
I('get.name'); // 等同于 htmlspecialchars(strip_tags($_GET['name']))

I 메서드를 사용할 때 필터 메서드를 지정하면 DEFAULT_FILTER 설정이 무시됩니다. 예:

echo I('get.name','','strip_tags'); // 等同于 strip_tags($_GET['name'])

I의 세 번째 매개변수가 메소드가 함수 이름에 전달되면 이 함수를 호출하여 변수를 필터링하고 반환한다는 의미입니다(변수가 배열인 경우 array_map은 자동으로 필터링에 사용됩니다). 그렇지 않으면 PHP의 내장 filter_var 메소드가 필터링을 위해 호출됩니다. 예:

I('post.email','',FILTER_VALIDATE_EMAIL);

는 $_POST가 필터링됨을 의미합니다. ['email']은 형식 확인을 수행하고 요구 사항을 충족하지 않는 경우 빈 문자열을 반환합니다.

(자세한 확인 형식은 filter_var 사용 공식 매뉴얼을 참조하세요.)

또는 다음 문자 식별 방법을 사용할 수 있습니다.

I('post.email','','email');

지원되는 필터 이름은 filter_list 방법에서 유효한 값이어야 합니다(다른 서버 환경은 다를 수 있음), 지원될 수 있는 항목은 다음과 같습니다:

int
boolean
float
validate_regexp
validate_url
validate_email
validate_ip
string
stripped
encoded
special_chars
unsafe_raw
email
url
number_int
number_float
magic_quotes
callback

일부 특별한 경우에는 DEFAULT_FILTER가 설정된 경우에도 필터링을 수행하고 싶지 않으며 다음을 사용할 수 있습니다.

I('get.name','',NULL);

필터링이 완료되면 매개변수는 NULL로 설정됩니다. 즉, 더 이상 필터링이 수행되지 않음을 나타냅니다.

이 기사는 ThinkPHP 프레임워크 기술 기사 칼럼에서 발췌한 것입니다: http://www.php.cn/phpkj/thinkphp/

위 내용은 thinkphp 나는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.