簡體   English   中英

為什么在PHP中可以使用?

[英]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

執行的語句是:

  1. eval(" echo 0?>');echo 1 ");
  2. echo 2;

第一個與運行以下PHP代碼非常相似:

<?php

echo 0
?>

'); echo 1

並清楚地打印0后跟'); echo 1 '); echo 1

然后執行第二條語句,輸出2

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM