2016-11-21 10 views
-1

このコードを実行すると、アラートに値が表示されず、代わりに空のアラートボックスが表示されます。JavascriptでPHP変数の値を取得できないのはなぜですか?

<?php 
$x = 20; 
$y = "Hello World!"; 

$list = array(); 
$list[0] = "January"; 
$list[1] = "February"; 
$list[2] = "March"; 
$list[3] = "April"; 
$list[4] = "May"; 
?> 


<script type="text/javascript"> 
alert("JS code executed"); 
alert(<?php $x ;?>); 
alert(<?php echo $list[3];?>); 
</script> 
+1

生成されたJSソースを見てください。 – SLaks

+0

XSSの脆弱性が存在します。 – SLaks

+0

@SLaksこれは、安全であるかどうかにかかわらず、 '$ x'または' $ list'の起源に依存するので、脆弱性が実際に存在するとは言えません。 –

答えて

1

最初に、$xをエコーし​​ていません。

第二に、あなたはそうは、JavaScriptの文字列を引用する必要があります。

alert("<?php echo $list[3]; ?>"); 

が働くだろう。

+1

あなたにXSSの脆弱性があります。 – SLaks

+0

私は彼らの警告がうまくいかない理由をOPに示しています。残りは私のものではなく、彼らのものです。 – Stuart

0

ブラウザの開発ツールを使用して、javascriptで何が起こっているのかを確認する必要があります。

Uncaught ReferenceError: April is not defined 

また、あなたは$ xをエコーするのを忘れて、あなたのスクリプトに引用符を入れて忘れてしまったためです:あなたがコンソールを見れば

、次のようなものが表示されます。右のコードです:

<script type="text/javascript"> 
alert("JS code executed"); 
alert("<?php echo $x ;?>"); 
alert("<?php echo $list[3];?>"); 
</script> 

@Slaksは、このコードは、XSSの脆弱性を持っていますが、あなたの$x$list変数の起源が安全であるかどうか、これが依存していると述べました。

関連する問題