这个PHP代码是个坏主意吗?

时间:2012-01-27 18:12:30

标签: php javascript netbeans

我在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;
    }

6 个答案:

答案 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攻击。

考虑到这一点。