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