>백엔드 개발 >PHP 튜토리얼 >아담 램버트 침입 PHP STRING 트랩 원리 설명

아담 램버트 침입 PHP STRING 트랩 원리 설명

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB원래의
2016-07-29 08:43:251221검색

문자열은 일련의 문자입니다.
문자별 문자열 액세스 및 수정
$str[42]와 같이 대괄호를 사용하여 문자열 뒤에 원하는 문자의 0부터 시작하는 오프셋을 지정하여 문자열 내의 문자에 액세스하고 수정할 수 있습니다. 이 목적을 위해서는 문자열을 문자 배열로 생각하십시오.
참고: $str{42}와 같이 같은 목적으로 중괄호를 사용하여 문자열에 액세스할 수도 있습니다. 그러나 이 구문은 PHP 5.3.0부터 더 이상 사용되지 않습니다. 대신 $str[42]와 같이 대괄호를 사용하세요.
경고
범위를 벗어난 오프셋에 쓰면 문자열이 공백으로 채워집니다. 정수가 아닌 유형은 정수로 변환됩니다. 잘못된 오프셋 유형은 E_NOTICE를 발생시킵니다. 음수 오프셋은 쓰기 시 E_NOTICE를 내보내지만 빈 문자열을 읽습니다. 할당된 문자열의 첫 번째 문자만 사용됩니다. 빈 문자열을 할당하면 NUL 바이트가 할당됩니다.
以上道是 php manual 中的原话.
需要注의료한 时候,我们访问数组的时候 tour是使用方括号"[]",string작성일 个也可以使사용操작符" []”자동차 운전 。但是,需要注 의의있는 一点就是,访问字符串时候,操作符“[]”中的内容会被转化为int类型的.
예 : $str = '123456';
echo $str['php'];//结果是1, 因为offset 'php'转化为integer为0,既是访问的是字符串的第一个字符.
var_dump(isset($str['php']));//结果是bool(true) 원본과 동일합니다.判断试下,传递过来的变weight是否是数组,然后再判断是否是存在指定的key
예 : //如果需要判断传递过来的数组是否存재'php'这个key时候,比较안전한보안법为:

复제대码 代码如下:

function is_set($arr, $key){
if (is_array($arr) ) && isset($arr[$key])) {
//存재该值的逻辑
} else{
//$arr不是数组 或者 数组$arr不存재key $key的逻辑
}
}

如果 上面的函数 没有添加 is_array 的判断,当传递一个 字符串过来的时候, 结果就不是我们预想的那样了。
仅此为记,以免以后也流现类似的问题。
以上就介绍了adam Lambert trespassing PHP STRING 陷阱原理说明,包括了adam Lambert trespassing side内容,希望对PHP教程有兴趣的朋友有所帮助。

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