2014-10-10 314 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