[英]Why does it work in PHP?
這是一個PHP腳本。
<?php
eval(" echo 0?>');echo 1 ");
echo 2;
?>
輸出為0');echo 1 2
。 似乎?>
告訴eval
只打印字符串的其余部分。 這是正確的行為還是有人可以解釋為什么會發生?
?>
僅在已評估的代碼內關閉PHP代碼,其余代碼解釋為HTML,並僅發送至瀏覽器。 eval()
需要PHP,不需要打開<?php
,但?>
結束了PHP。 將eval()
視為虛擬機,它獨立於具有eval()
的頁面中的PHP執行其代碼。 所以:
<?php // start executing PHP
// evaluate PHP independently, inside a function
// echo 0
eval(" echo 0
?> // end PHP execution
');echo 1 " // output as HTML
); // end the eval() function execution
echo 2; // since eval() is complete as a PHP function, continue PHP execution
?> // end PHP execution
執行的語句是:
eval(" echo 0?>');echo 1 ");
echo 2;
第一個與運行以下PHP代碼非常相似:
<?php
echo 0
?>
'); echo 1
並清楚地打印0
后跟'); echo 1
'); echo 1
。
然后執行第二條語句,輸出2
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.