Hive Logic Enkoder을 사용하여 난독 화 된 전자 메일을 생성했습니다. 결과를 PHP에 표시하고 싶습니다. PHP에서 문자열을 완전히 그대로 사용하십시오
문제
는 PHP 문자열을 읽는 방법을 모두 엉망의'
,
"
,
\\
및
\\\\
을 포함하고 있다는 점이다. 어떻게 PHP를 문자 그대로 사용하게 할 수 있습니까? 이스케이프해야하는 문자를 이스케이프 처리하고 이스케이프 처리하지 않는 문자를 이스케이프 처리하지 않습니까?
그래서 내가 원하는 :
echo '<script type="text/javascript">
//<![CDATA[
<!--
var x="function f(x){var i,o=\"\",ol=x.length,l=ol;while(x.charCodeAt(l/13)!" +
"=102){try{x+=x;l+=l;}catch(e){}}for(i=l-1;i>=0;i--){o+=x.charAt(i);}return " +
"o.substr(0,ol);}f(\")12,\\\",&.=1,p?3k`,gcheB8'Xfo!l720\\\\430\\\\120\\\\>X" +
"%E220\\\\230\\\\100\\\\530\\\\700\\\\RS,OT130\\\\630\\\\400\\\\230\\\\130\\" +
"\\530\\\\4[120\\\\700\\\\600\\\\010\\\\300\\\\520\\\\,a038t=68&>&2?120\\\\(" +
"*\\\"\\\\,v$>%!&+g030\\\\~$$2Wt\\\\I330\\\\400\\\\r\\\\JOGUImi3hu771\\\\tmt" +
"yq\\\"(f};o nruter};))++y(^)i(tAedoCrahc.x(edoCrahCmorf.gnirtS=+o;721=%y;i=" +
"+y)12==i(fi{)++i;l<i;0=i(rof;htgnel.x=l,\\\"\\\"=o,i rav{)y,x(f noitcnuf\")" ;
while(x=eval(x));
//-->
//]]>
</script>
';
편집 : 여기에 내가 지금 사용하고 함수의 :
function supportEmail() {
$str = <<<'EOT'
<script type="text/javascript">
//<![CDATA[
<!--
var x="function f(x){var i,o=\"\",ol=x.length,l=ol;while(x.charCodeAt(l/13)!" +
"=102){try{x+=x;l+=l;}catch(e){}}for(i=l-1;i>=0;i--){o+=x.charAt(i);}return " +
"o.substr(0,ol);}f(\")12,\\\",&.=1,p?3k`,gcheB8'Xfo!l720\\\\430\\\\120\\\\>X" +
"%E220\\\\230\\\\100\\\\530\\\\700\\\\RS,OT130\\\\630\\\\400\\\\230\\\\130\\" +
"\\530\\\\4[120\\\\700\\\\600\\\\010\\\\300\\\\520\\\\,a038t=68&>&2?120\\\\(" +
"*\\\"\\\\,v$>%!&+g030\\\\~$$2Wt\\\\I330\\\\400\\\\r\\\\JOGUImi3hu771\\\\tmt" +
"yq\\\"(f};o nruter};))++y(^)i(tAedoCrahc.x(edoCrahCmorf.gnirtS=+o;721=%y;i=" +
"+y)12==i(fi{)++i;l<i;0=i(rof;htgnel.x=l,\\\"\\\"=o,i rav{)y,x(f noitcnuf\")" ;
while(x=eval(x));
//-->
//]]>
</script>
EOT;
echo $str;
}
는하지만이 오류가 반환받을 :
구문 분석 오류 : 구문 오류 예상치 못한 $ end, 예상 T_VARIABLE 또는 T_END_HEREDOC 또는 T_DOLLAR_OPEN_CURLY_BRACES 또는 T_CURLY_OPEN
이 문자열을 어떻게 읽었는지 표시하십시오. 어떤 식 으로든 텍스트를 실행하지 않는 한 PHP는 문자열에 삽입 된 메타 문자로 아무 것도하지 않습니다. via eval(). –
원하는 것은 [nowdocs] (http://www.php.net/manual/en/language.types.string.php#language.types.string.syntax.nowdoc)입니다. – Palladium
구문 오류는'EOT;'*의 줄이 줄의 처음에 있어야하기 때문에 (즉, 앞에 공백이없고 뒤에는 공백이 없어야하기 때문입니다). – Palladium