簡體   English   中英

使用從 php 模板創建 javascript 變量<script> tag - PHP/Wordpress

[英]Create javascript variable from php template using <script> tag - PHP/Wordpress

我想從我的一個 php 頁面模板中動態分配一個 JS 變量,以便在我的bundle.js文件中使用分配的變量。

我正在這樣做:

模板-一些-page.php:

<?php
       echo "<script>
       var javascriptVar = 'success';
       </script>";
?>

<div>
  ...
</div>

捆綁.js:

function readVar() {
   console.log(javascriptVar )
}

這種方法效果很好,但問題是使用這種方法是一種好習慣嗎?
在體內創建標簽是否安全?

在此處輸入圖像描述

<?php
$script = "
 <script>
  console.log("Hello World");
  var javascriptVar = "success";   
 </script>";
echo $script; 
?>

(或者)

您可以關閉 PHP 標記並編寫一些 Html 或 js 腳本,然后重新打開 PHP 標記以繼續在同一 .php 擴展文件中編寫剩余的 PHP 代碼

<?php 
 // my PHP code
?>
<script>
  console.log("Hello World");
  var javascriptVar = "success";   
</script>
<?php 
 // my PHP code
?>

您顯示的代碼沒有安全問題,只有一個:它將您的javascriptVar全局 Javascript 對象中。

你可能會更好地使用它。

    echo "<script>
       var annasApp = annasApp || {};
       annasApp.javascriptVar = 'success';
       </script>";

var annasApp = annasApp || {}; var annasApp = annasApp || {}; 如果它不存在,則在全局命名空間中創建一個對象。 然后它為對象分配一個屬性值。 這使得全局命名空間更干凈且不易出錯——其他代碼不太可能踩到您的代碼,反之亦然。

如果你的代碼想做annasApp.javascriptVar = $phpVariable; 確實有潛在的安全問題 必須在回顯之前轉義 $phpVariable 中的數據。 否則,您的代碼可能容易受到跨站點腳本攻擊 使用 JSON 是一種很好且安全的處理方式。

    $jsonVariable = json_encode( htmlspecialchars( $phpVariable ) );
    echo "<script>
       var annasApp = annasApp || {};
       annasApp.javascriptVar = $jsonVariable;
       </script>";

htmlspecialchars()是不必要的,除非您的 Javascript 數據將使用 HTML 呈現。

暫無
暫無

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

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