我在php文件中编写了以下while循环。该文件完全符合我的要求。但是,我的代码编辑程序(Netbeans IDE 7.0.1)在参数列表之后继续指示以下错误:“缺少”。该错误附加到javascript标记内的行。我是如何创建var Topcaption的?代码似乎在IE,FF和Chrome中运行良好。感谢您提供的任何建议!
if ($totalRows_Top_Slides != 0) {
mysql_data_seek($Top_Slides,0);
$i = 1;
$j = 100;
while ($row = mysql_fetch_array($Top_Slides)) {
?>
<script type="text/javascript">
var Topcaption<?php echo $i;?> = "<?php echo $row['caption'];?>";
</script>
<?php
$Top_images .= "<img id=\"Topimage" . $i . "\" class=\"slide_out\" style=\"z-index: " . $j . "\" src=\"" . $row['file_folder'] . $row['file'] . "\" width=\"280\" height=\"170\" alt=\"\" />";
$i = $i + 1;
$j = $j - 1;
}
答案 0 :(得分:2)
不要担心,
Netbeans只是不知道如何解释这些混合代码。它在Aptana发生在我身上。
答案 1 :(得分:1)
我已将您的示例代码粘贴到我在Ubuntu上的NetBeans版本中,它似乎只是 NetBeans 7.0.1 中的错误。要修复,upgrade to Netbeans 7.1。
作为旁注,为了理智,我建议您将代码更改为:
<?php
mysql_data_seek($Top_Slides,0);
$i = 1;
$j = 100;
echo '<script type="text/javascript">';
while ($row = mysql_fetch_array($Top_Slides)) {
echo 'var Topcaption'.$i.' = "'.$row['caption'].'";';
$Top_images .= "<img id=\"Topimage" . $i . "\" class=\"slide_out\" style=\"z-index: " . $j . "\" src=\"" . $row['file_folder'] . $row['file'] . "\" width=\"280\" height=\"170\" alt=\"\" />";
$i = $i + 1;
$j = $j - 1;
}
echo '</script>';
?>
这样,你只有1个脚本标签,而不是100个。
答案 2 :(得分:0)
一切看起来都不错。有可能它正在看到你要声明的Topcaption变量不喜欢的东西,因为它也在读取对变量无效的php符号。
答案 3 :(得分:0)
Netbeans无法处理PHP文件中的JavaScript,即使它在PHP文件中处理HTML也不错。您可以放心地忽略该错误。如果你想摆脱这个错误,把javascript放在.js中,然后从HTML标签链接到它。
答案 4 :(得分:0)
具体的代码没有问题,但所有这些混合标签都混淆了语法检查器。我不喜欢像这样的原因混合PHP和静态输出,我会把它重写为:
if ($totalRows_Top_Slides != 0) {
mysql_data_seek($Top_Slides,0);
echo "<script type=\"text/javascript\">\n";
for ($i = 1, $j = 100; $row = mysql_fetch_assoc($Top_Slides); $i++, $j--) {
echo "var Topcaption$i = \"{$row['caption']}\";\n";
$Top_images .= "<img id=\"Topimage" . $i . "\" class=\"slide_out\" style=\"z-index: " . $j . "\" src=\"" . $row['file_folder'] . $row['file'] . "\" width=\"280\" height=\"170\" alt=\"\" />";
}
echo '</script>';
}
正如您所看到的,StackOverflow语法分析器也更喜欢这个版本。
答案 5 :(得分:0)
<强>注意!强>
如果$ row ['caption']基于用户输入,则代码会出现XSS漏洞。
另请注意,htmlspecialchars在SCRIPT标记内不起作用(它们可能有效,但不会有任何好处,因为htmlspecialchars(和类似函数)的目的是防止攻击者注入html标记(通过转换) &lt;,&gt;,&amp;等等。但是,在SCRIPT标签内部,攻击者不需要注入html标签来执行XSS攻击。
考虑到这一点。