簡體   English   中英

轉義 <?php ?> 在php文件的JavaScript中

[英]Escaping <?php ?> in the JavaScript of a php file

我有一個PHP文件index.php,其中包含下面的jQuery / JavaScript代碼。 該代碼定義了一個字符串,該字符串將被jajax到服務器后將成為一個新的PHP文件。 index.php加載正常,直到我將PHP行放入第一個數組成員中為止。 然后,當我加載index.php時,我得到:

SyntaxError: <html xmlns="http://www.w3.org/1999/xhtml"><head>

因為index.php是一個正在運行的PHP文件,所以我知道我必須轉義領先的< in <?php否則PHP處理器將在服務器中跳轉。 但顯然我需要做的還不止這些。 有人看到我如何構造它,以便index.php加載,然后此代碼將<?php ?>向上傳遞為無害的字符串嗎?

$(function() {

var seg1 = ["\<?php phpinfo(); ?>\n",
    "<!doctype html>\n ",
    "<!-- HTML5  -->\n",
    "<html>\n",
    "<head>\n",
    "<meta charset='utf-8' />\n",
    "<title>MyPlace</title>\n" ,
    "<script src='//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js'><\/script>\n",
    "<script src='//ajax.googleapis.com/ajax/libs/jqueryui/1.10.2/jquery-ui.min.js'><\/script>\n"
       ].join('');
}

phpinfo()本身會生成一個HTML頁面,因此將其與另一個文檔並排並不是完全符合猶太標准。

也就是說,您可以先使用輸出緩沖來捕獲phpinfo()的輸出,然后使用json_encode()進行正確的轉義:

<?php

    ob_start();
    phpinfo();
    $info = ob_get_clean();

?>
$(function() {
    var seg1 = [<?php echo json_encode($info); ?>,
        "<!DOCTYPE html>\n" // etc etc
    ].join('');

更新資料

我誤解了你的問題; 似乎您允許在服務器上上傳和執行任意PHP代碼。 這是非常危險的 ,我的第一個建議是基本上放棄這個想法

如果您仍然想放開腳,請按照以下步驟操作:

var seg1 = ["<" + "?php phpinfo(); ?" + ">\n",
    "<!DOCTYPE html>\n" // etc etc
].join('');

暫無
暫無

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

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