【问题标题】:PHP Script crashes IE6PHP脚本崩溃IE6
【发布时间】:2015-01-27 17:08:56
【问题描述】:

下面的代码由于某种原因导致 IE6 崩溃。尽管 IE 很糟糕,但我以前从未见过这种情况。有人有什么想法吗?

<div id="edit">
<?php 

$a = $_POST['category'];
if ($a == "")
{
    $a = $_GET['category'];
}

$result = mysql_query("SELECT * FROM media WHERE related_page_id = $a && type= 'copy'");

?>

<table width="460px;">
    <tr>
        <td>Item</td>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
        <td>Associated Images</td>
    </tr>
    <tr>
        <td colspan="5">&nbsp;</td>
    </tr>
<?php
while($row = mysql_fetch_array($result))
{
    echo "<tr style='vertical-align:top'><td>$row[title]</td>";
    echo "<td><a href='addimage.php?id=$row[id]&&category=$a'>Add image/file</a>";
    echo "<td><a href='change.php?id=$row[id]&&category=$a'>edit</a></td>";
    echo "<td><a href='delete.php?id=$row[id]&&category=$a'>delete</a></td>";
    echo "<td>";

    $id = $row['id'];
    $result1 = mysql_query("SELECT * FROM media WHERE assets = $id");
    while($row1 = mysql_fetch_array($result1))
    {
        echo "<a href='$row1[path]'>$row1[title]</a> | <a href='delete.php?id=$row1[id]&&category=$a'>remove?</a><br />";
    }
    echo "</td></tr>";
}
if($a == 1 || $a == 3 || $a == 5){
}else{
    echo "<tr><td colspan='5'>&nbsp;</td></tr>";
    echo "<tr><td colspan='5'><a href='change.php?id=0&&category=$a'>New Item</a></td></tr>";
}

?>
</div>
</div>
</div>
</table>
</body>
</html>

【问题讨论】:

  • 请发布生成的 HTML,因为它会导致 IE 崩溃,而不是 PHP 代码。
  • 您确实需要使用参数化查询(请参阅 MDB2 PEAR 库)或在 $a 上调用 mysql_real_escape_string(),然后再将其包含在查询字符串中,否则您将面临 SQL 注入.或者,如果它总是应该是一个数字,请先调用 intval() 。

标签: php html internet-explorer-6


【解决方案1】:

不知道是不是崩溃的原因,但是行里的td标签

echo "<td><a href='addimage.php?id=$row[id]&&category=$a'>Add image/file</a>";

没有关闭。另外:

</div>
</div>
</div>
</table>

应该是:

</table>
</div>
</div>
</div>

此外 - 出于安全原因 - 在下面的查询中使用之前检查 $a 是否为数字。

$a = $_POST['category'];
if ($a == "")
{
        $a = $_GET['category'];
}

$result = mysql_query("SELECT * FROM media WHERE related_page_id = $a && type= 'copy'");

【讨论】:

    【解决方案2】:

    这是生成的代码:

    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    
            <script type="text/javascript" src="../javascript/tiny_mce/tiny_mce.js"></script>
        <script type="text/javascript">
            tinyMCE.init({
                mode : "textareas",
                theme : "advanced"
            });
        </script>
    
    
        <title>Chapman Corp Site - CMS</title>
        <link rel="stylesheet" href="../css/admin.css" type="text/css" media="screen" title="Chapman" charset="utf-8" />
            <!--[if lte IE 6]> 
    <link rel="stylesheet" href="../css/ie6.css" type="text/css" media="screen" />
    <script type="text/javascript" src="../javascript/unitpngfix.js"></script>
    <![endif]-->
    
    </head>
    <body>
    <div id="page">
    <div id ="content">
    <p><a href="index.php">Home</a></p><div id="edit">
    
    <table width="460px;">
        <tr>
            <td>Item</td>
            <td>&nbsp;</td>
            <td>&nbsp;</td>
    
            <td>&nbsp;</td>
            <td>Associated Images</td>
        </tr>
        <tr>
            <td colspan="5">&nbsp;</td>
        </tr>
    <tr style='vertical-align:top'><td>Home</td><td><a href='addimage.php?id=77&&category=1'>Add image/file</a><td><a href='change.php?id=77&&category=1'>edit</a></td><td><a href='delete.php?id=77&&category=1'>delete</a></td><td><a href='../uploads/footer.jpg'>footer.jpg</a> | <a href='delete.php?id=88&&category=1'>remove?</a><br /></td></tr></div>
    
    </div>
    </div>
    </table>
    </body>
    </html>
    

    【讨论】:

    • Drew:删除 行,然后看看是否仍然会导致页面崩溃。
    【解决方案3】:

    生成的代码不会让 IE6 崩溃。它可能是您的样式表或 javascript 之一,也可能只是我的设置(IE6 在这里用作独立浏览器)。

    另外,为什么你有那些双&符号?您确定不想改用&amp;amp;

    【讨论】:

    • 同意。导致浏览器崩溃的是 HTML,而不是 PHP。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-01
    • 1970-01-01
    相关资源
    最近更新 更多