htmlspecialchars'ın ve json kodlamak sorun

2 Cevap php

Ben bir pop penceresine çıktı bazı kötü html biçimlendirmek çalışıyorum. Html bir mysql veritabanında bir alanda saklanır.

Ben bu yüzden gibi php json_encode ve satır üzerinde htmlspecialchars performans edilmiştir:

$html = htmlentities(json_encode($row2['ARTICLE_DESC']));

ve sadece bir Paramtre olarak html alır ve onu kullanan benim makeWindows işlevini çağırarak bu yüzden seviyorum withdocument.write:

  <p><a href='#' onclick=\"makewindows('".$html."'); return false;\">Click for full description </a></p>

Bazı html kodu üretilir gibi bu aşağıdaki gibi ok, çalışır:

http://www.nomorepasting.com/getpaste.php?pasteid=22823&seen=true&wrap=on&langoverride=html4strict

SO satırları sarmak için nasıl bilmiyorum çünkü orada yapıştırılan

Sorun açılır pencere oluşturulur gibi htmlspecialchars'ın, kötü html veri sıyırma gibi görünüyor olmamasıdır. Ben kundakçı ile aldığınız hata

argüman listesinden sonra) eksik

Ancak html dışında benim kontrolüm olduğunu.

Ne okudum, ben doğru adımları alıyorum. Ben bir şey eksik, o nedir?

Benim tam markası pencere fonksiyonu:

function makewindows(html){
child1 = window.open ("about:blank");
child1.document.write(html);
child1.document.close(); 
}

2 Cevap

Sen işlev çağrısında tek tırnak olmamalıdır. Bu gibi görünmelidir:

<p><a href='#' onclick=\"makewindows(" . $html . "); return false;\">Click for full description </a></p>

Sonra çıkış gibi görünecektir

<p><a href='#' onclick="makewindows(&quot;.....&quot;); return false;">Click for full description </a></p>

hangi doğru.

Bunu şu şekilde deneyin:

$html = htmlentities(json_encode($row2['ARTICLE_DESC']),ENT_QUOTES);

I think the single quotation marks are not escaped by default. Nevertheless I recommend you saving the html in a JavaScript variable before opening the window.