2013-02-21 228 views
0

我目前正致力於製作一個簡單的php腳本來編輯JavaScript中游戲的某些方面。當試圖使用表單將腳本中的變量傳遞給遊戲時,可變數據似乎不會傳輸。截至目前,該腳本旨在編輯遊戲中一名玩家的RDG值。代碼如下:PHP變量爲Javascript變量

的script.php:

<html> 
<head> 
<title>Form</title> 
</head> 
<body> 

<form method="get" action="tron2.html"> 


<p>What are your player 1's RGB values: 
<input type="text" name="color1r" /> Red 
<input type="text" name="color1g" /> Green 
<input type="text" name="color1b" /> Blue </p> 

<input type="submit" value="Submit" /> 

</form> 

</body> 
</html> 

在哪裏變量被分配

<?php 

$color1r = $_POST["color1r"]; 
$color1g = $_POST["color1g"]; 
$color1b = $_POST["color1b"]; 


?> 


<HTML> 
    <HEAD> 
    <TITLE> 
     Tron2 
    </TITLE> 
    <script> 
        var x = "<?= $color1r; ?>"; 
        var y = "<?= $color1g; ?>"; 
     var z = "<?= $color1b; ?>"; 
        //more code for the game 

當遊戲運行的代碼的JavaScript中的部分中,播放器的顏色保持黑色,所以x,y,z的值必須全爲0.是否有任何理由不通過值?

+4

'<='已經意味着'echo'。不確定'<?= echo'是幹什麼的。 – 2013-02-21 02:01:53

+0

我刪除了回聲,但它仍然有相同的問題 – 2013-02-21 02:04:01

+0

如果這仍然不起作用,它可能是別的。 – Popnoodles 2013-02-21 02:32:55

回答

6
<form method="get" ...> 

$color1r = $_POST["color1r"]; 

不是朋友。

<form method="post" ...>$color1r = $_POST["color1r"];是朋友,
<form method="get" ...>$color1r = $_GET["color1r"];也是朋友。

另外<?= echo應該報錯。使用<? echo $string<?=$string

+0

打我:D – 2013-02-21 02:02:24

+0

我更改了「method =」得到「」到「發佈」,但似乎問題仍然存在,沒有任何變化 – 2013-02-21 02:05:44

+0

我喜歡你的描述:) – Mike 2013-02-21 02:13:24

0

除了切向POST/GET混合,總是使用json_encode()在JS代碼中輸出PHP變量。

echo沒有轉義或其他轉義函數將產生無效和/或不安全的代碼。

<script>var jsvalue = <?php echo json_encode($phpvalue) ?>;</script> 

在您的具體情況:?

<form method="post" action="tron2.html"> 

<script> 
    var x = <?= json_encode($color1r) ?>; 
+1

爲什麼需要/這是如何解決顯然是一個get/post數據混合的問題? – 2013-02-21 02:04:24

+0

這不是問題的答案,也不是真的。回聲沒有逃脫或其他逃逸功能**可能會**生成無效和/或不安全的代碼。 – Popnoodles 2013-02-21 02:05:17

+1

@流行音樂說「不真實」是有點苛刻;你對於一個非常常見的最容易受到攻擊的模式中的幸運安全案例頗爲迂腐。 – Kornel 2013-02-21 02:08:13