2014-10-10 361 views
-1

我想知道为什么变量用户不能工作。将变量从php传递给javascript

<script type="text/javascript"> 
    var user = <?php echo $r;?>; 
    document.write(user); 
</script> 

<form method="post" action="<?PHP echo $_SERVER["PHP_SELF"]?>"> 
    <input type="text" name="username" placeholder="username"><br><br> 
    <input type="password" name="pw" placeholder="password"><br> 
    <input type="submit" value="UPDATE" ="loadXMLDoc()"> 
</form> 

回答

5

假设$r是一个字符串,你需要用它的报价:

var user = '<?php echo $r;?>'; 

不带引号,浏览器将看到:

var user = Sandeep; 

更妙的是,使用PHP JSON对字符串进行编码,该字符串将转义任何引号并防止XSS漏洞:

var user = <?php echo json_encode($r);?>; 

附注,呼应$_SERVER["PHP_SELF"]转化为HTML是已知的XSS漏洞。你应该运行它:htmlspecialchars()

<form method="post" action="<?PHP echo htmlspecialchars($_SERVER["PHP_SELF"])?>"> 
+0

不是'<?php echo json_encode($ r);?>'还需要用引号括起来吗? – 2014-10-10 17:22:11

+0

不,如果你尝试json编码字符串,它会添加引号:) – MrCode 2014-10-10 17:24:30

+0

*哦,*有趣,我不知道(*到现在*),谢谢。 – 2014-10-10 17:25:07