我有以下JavaScript函數。該函數實際上填充jquery日期選擇器,但對於這個問題,我刪除了代碼,因爲它不相關。從包含數學表達式(但實際上是一個日期)的PHP變量的JavaScript字符串評估
function PrintDateToConsole() {
var testDate;
<?php
$test_date = date("Y-m-d", time());
printf("testDate=$test_date;\n");
?>
console.log(test_date);
}
當我運行此代碼時,在控制檯中打印的結果是1978年(今天的日期2014-6-30 = 1978)。
爲什麼日期字符串被評估爲數學表達式,我該如何防止它?
注:我相當肯定這是因爲,當我瀏覽網頁我看到源JavaScript的問題,而不是一個PHP的問題:
function PrintDateToConsole() {
var testDate;
testDate=2014-06-30;
console.log(test_date);
}
您正在遭受SQL注入攻擊的PHP/JS等價物:您正在將文本從一個上下文輸出到另一個上下文中,而不考慮接收上下文將如何看到該文本。 –
如果你想輸出PHP值給JS,用json_encode包裝它們。您將爲JS生成有效和預期的文字值。 –