簡體   English   中英

如何為 javascript 從 PHP 轉義字符串?

[英]How to escape string from PHP for javascript?

讓我們想象一個表單編輯器,它可以編輯可用值。 如果數據包含"字符(雙引號)它“破壞”HTML 代碼。我的意思是,讓我們檢查代碼:所以我生成 HTML:

onclick="var a = prompt('New value: ', '<?php echo addslashes($rec[$i]); ?>'); if (a.= null)....

結果是

onclick="var a = prompt('New value: ', 'aaaa\"aaa'); if (a.= null) { v....

這使得 JS 無法工作,從而破壞了代碼。 使用單個 qoute '它可以正常工作。 mysql real escape也是如此。 如何轉義任何字符串以使其不會破壞 javascript?


json_encode 看起來不錯,但我一定做錯了什么,它仍然很糟糕:這是 Firefox 如何看到它的屏幕截圖 - 它插入了一個“壞”雙引號:該值只是一個簡單的數字:

http://img402.imageshack.us/img402/5577/aaaahf.gif

我確實使用過:

('Ird be az új nevet:', <?php echo json_encode($rec['NAME']); ?>); if (a) { 

應使用htmlspecialchars()像任何其他HTML屬性一樣轉義onclick屬性的值。 代碼中的實際Javascript字符串應使用json_encode()進行編碼。 例如:

<?php
$message = 'Some \' problematic \\ chars " ...';
$jscode = 'alert('.json_encode($message).');';
echo '<a onclick="' . htmlspecialchars($jscode) . '">Click me</a>';

那就是說... onclick(或任何其他事件)屬性是如此2005年。幫自己一個忙,將你的javascript代碼從你的html代碼中分離出來,最好是外部文件,並使用DOM函數(或jQuery,包裝)附加事件它很好)

onclick="var a = prompt('New value: ', 'aaaa\"aaa'); if (a != null) { v....

您的問題以粗體突出顯示。 你不能引用變量聲明,一旦刪除它就不需要轉義雙引號,因為它在單引號內。 看起來應該是這樣的 -

onclick="newFunc();"
<script>
function newFunc()  {
var a = prompt('New value: ', 'aaaa"aaa'); 
if (a != null) { v....
}
</script>
...onclick="new_func();"...
<script>
function new_func() {
    var a = prompt('new value:','<?php code; ?>');
    if (a) { <!--javascript code--> } else { <!--javascript code--> }
}
</script>

我真的只是重寫@Marshall House在這里說的話,但是:

在HTML中,雙引號(“)將始終結束一個屬性,無論反斜杠如何 - 所以它看到: onclick="var a = prompt('New value: ', 'aaaa\\" 。@ Marshall提供的解決方案是將您的代碼分離成一個函數。這樣您就可以將轉義的PHP打印到它中而不會出現問題。

例如:

<script>
    // This is a function, wrapping your code to be called onclick.
    function doOnClickStuff() {
        // You should no longer need to escape your string. E.g.:
        //var a = prompt('new value:','<?php echo $rec[$i]; ?>');
        // Although the following could be safer
        var a = prompt('new value:',<?php json_encode($rec[$i]); ?>);
        if (a) { <!--javascript code--> }
        else { <!--javascript code--> }
    }
</script>
<someelement onclick="doOnClickStuff();"> <!-- this calls the javascript function doOnClickStuff, defined above -->
訪問 https://mrdeeps.xyz/loc/2022/08/03/escaping-to-php/ [在此處輸入鏈接描述][1]

暫無
暫無

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

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