Bu bir benim son soru here. cevabı aslında orada çalışmıyor yayınlanmıştır kadar izleyin. Yani burada bir sorundur. Sen (jQuery dahil varsayalım) bu kodu verilmiştir:
<input type=text>
<script>
$("input").val(**YOUR PHP / JS CODE HERE**);
</script>
JQuery kullanarak - ve giriş etiketi doğrudan PHP çıktı enjekte - sadakatle giriş etiketi veritabanından HERHANGİ metni yeniden. Veritabanı alan diyorsa </script>
, alanı çok olduğunu söylemek gerekir. Bunun içinde Çince, çift tırnak, varsa ne olursa olsun, o da yeniden. PHP değişken $text
denir varsayalım.
İşte benim başarısız girişimleri bazılarıdır.
1)
$("input").val("<?= htmlentities($text); ?>");
FAILURE: Reproduces character encoding exactly as is in text fields.
INPUT: $text = "Déjà vu"
OUTPUT: Field contains literal déjà vu
2)
$("input").val(<?= json_encode($text); ?>);
This was suggested as the answer in my last question, and I naively accepted it. However...
FAILURE: json_encode
only works with UTF-8 characters.
INPUT: $text = "Va e de här fö frågor egentlien"
OUTPUT: Field is blank, because json_encode
returns null
.
3)
var temp = $("<div></div>").html("<?= htmlentities($text); ?>");
$("input").val(temp.html());
This was my most promising solution for the weird characters, except...
FAILURE: Does not encode some characters (not sure exactly which, don't care)
INPUT: $text = "</script> Déjà"
OUTPUT: Field contains </script> Déjà
4) yanıtlar Önerilen
$("input").val(unescape("<?= urlencode($text); ?>"));
ARIZA: Spaces + 'ın olarak kodlanmış kalır.
$("input").val(unescape(<?= rawurlencode($text); ?>"));
Almost çalışır. Önceki tüm giriş başarılı, ama multibyte şeyler, kanji gibi kodlanmış kalır. decodeURIComponent
da baytlı karakterleri sevmez.
Benim için unutmayın, gibi şeyler strip_tags
bir seçenek değildir. Herşey izin verilmelidir. İnsanlar bu sınavlar ile yazma, ve olan birisi HTML bilginizi test eden bir sınav yapmak, böylece olmak istiyorsa. Ayrıca, ne yazık ki sadece giriş etiketleri değer alanına htmlentities
kaçtı metin ekleme yapamazsınız. Bu etiketler dinamik olarak oluşturulur, ve ben tamamen bu şekilde yapmak benim geçerli javascript kod yapısını yıkmak gerekir.
Burada SOL gibi hissediyorum. Ben nasıl yanlış bana göster.
EDIT
Initally </script> Déjà här fö frågor 漢字
db içine girilen kullanıcı varsayalım. Bu </script> Déjà här fö frågor 漢字
olarak (phpMyAdmin içinde görmek istiyorum) saklanır