Nasıl düzgün bir oluşturulan JavaScript değerin değeri olarak bir değişken katmak olabilir?

4 Cevap php

Ben PHP değerine (id "kod" ile) metin alanının değerini değiştirmek (değişken depolanan $code) olamaz:

$code = $_POST['code'];
echo "<script language='javascript'>
document.getElementById('code').value = $code </script>";

I also tried '$code' and "$code","..." + "%code + "...", but neither helped. What am I doing wrong?

4 Cevap

$ Kodu bir dize var mı? O yüzden alıntı gerekir eğer.

örneğin $ kodu "benim test dizesini" eşitse, Javascript gibi çıkış olacaktır:

$code = $_POST['code'];
echo "<script language='javascript'>
document.getElementById('code').value = my test string </script>";

hangi geçersiz Javascript olduğunu.

Sen gerekir:

$code = str_replace("'", "\'", $_POST['code']);
echo "<script language='javascript'>
document.getElementById('code').value = '$code' </script>";

Ben de yapardı:

$code = str_replace("'", "\'", htmlspecialchars($_POST['code']));

htmlspecialchars XSS saldırıları önlemek için HTML karakterleri tırnak.

Bu deneyin:

$code = $_POST['code'];
echo "<script language=\"javascript\">
document.getElementById(\"code\").value =". $code. "</script>";

Ya da daha iyisi:

<?php
$code = str_replace("'", "\'", htmlspecialchars($_POST['code']));
?>

<script type="text/javascript">
document.getElementById("code").value = "<?php echo $code;?>";//OR <?= $code;?>;
</script>

.value = $code

karşı

.value = '".str_replace("'", "\'", $code)."'

PHP bunu yazdık $code görmüyveya. Bunun yerine bu kullanın:

$code = $_POST['code'];
echo "<script language='javascript'>
document.getElementById('code').value = ".$code."; </script>";

veya

$code = $_POST['code'];
echo "<script language='javascript'>
document.getElementById('code').value = {$code}; </script>";

Either mveyae explicitly allows PHP to recognise and parse your string.