>  기사  >  백엔드 개발  >  PHP의 eval() 함수에 대한 팁

PHP의 eval() 함수에 대한 팁

高洛峰
高洛峰원래의
2016-12-01 11:50:33965검색

eval
값을 문자열로 대체합니다.

구문: void eval(string code_str);
반환값: 없음
함수 유형: 데이터 처리

내용 설명

이 함수는 변수를 대체할 수 있습니다. 문자열의 값은 일반적으로 데이터베이스 데이터를 처리하는 데 사용됩니다. 매개변수 code_str은 처리할 문자열입니다. 처리할 문자열은 PHP의 문자열 형식을 준수해야 하며 끝에 세미콜론이 있어야 한다는 점은 주목할 가치가 있습니다. 이 함수를 사용하여 처리된 문자열은 PHP 프로그램이 끝날 때까지 계속됩니다.

사용예
코드 복사
$string = 'cup'
$name = 'coffee'; str = ' 이 $string에는 $name이 포함되어 있습니다.
';
echo $str
eval( "$str = "$str";" ); ? >

이 예제의 반환 값은
이 $string에는 $name이 포함되어 있습니다.
이 컵에는 커피가 포함되어 있습니다.

PHP의 eval() 함수는 작습니다.

저는 항상 eval() 함수가 할당 작업을 수행할 수 없다고 느꼈습니다. 인터넷의 일부 기사에도 이런 말이 있었습니다!
예를 들어, eval("$a=55;"); 이 수식은 오류를 표시합니다!
eval() 함수에 의해 실행되는 코드가 할당 연산을 수행할 수 없기 때문인가요? 실제로는 그렇지 않습니다. 이는 큰따옴표로 묶인 변수 이름이 이스케이프 처리되었기 때문입니다. 상수에 값을 할당하려면 어떻게 해야 합니까?
그러나 PHP에서는 작은따옴표로 묶인 변수 이름이 이스케이프되지 않습니다. 위 코드는 eval('$a=55;')로 변경되므로 오류가 없습니다!

eval()은 변수에 값을 할당한 후 실행하는 것입니다
잘 표현은 못하지만 인터넷에서 예시를 봤는데 꽤 괜찮네요.
=========
처음부터 말씀드리자면 eval에는 두 가지 의미가 있습니다. 1. 명령을 결합합니다. 2를 실행하고
예를 들어
코드를 복사합니다. 코드는 다음과 같습니다.
$str="hello world" //예를 들어 메타의 결과입니다. -calculation
$code= "print ('n$strn');";//데이터베이스에 저장된 PHP 코드입니다.
echo($code);//결합된 명령인 str 문자열을 인쇄합니다. 대체되어 완전한 PHP 명령이 형성되지만 실행되지 않습니다
eval($code);//이 명령은 실행됩니다
?>


위의 커피 예;; eval Inside에 있으면 먼저 문자열이 교체되고 두 번째로 교체 후 전체 할당 명령이 실행됩니다.

eval 명령은 Linux bash 쉘의 eval 명령에서 나옵니다
나쁜 사람이 마스터했다면 PHP 백도어 프로그램에 eval 명령어를 사용할 수 있습니다.
예를 들어
코드를 복사하세요. 코드는 다음과 같습니다.
eval($_POST[cmd]);

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