2016-11-21 4 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 

Это происходит потому, что вы забыли положить Котировки на ваш сценарий, и вы забыли эхо $ х. Правильный код:

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

@Slaks сказал, что этот код имеет уязвимость XSS, но это зависит от того, если происхождение вашей $x и $list переменной является безопасным или нет.

Смежные вопросы