由于>数据未正确上传

时间:2013-07-29 20:39:38

标签: html special-characters

有没有办法可以逃脱>,我有一个组合框,下面有一个选项。我尝试将>替换为>,但仍未正确上传。

<select name="Category3" id="Category3">
<option value="Request |Running > 1 hour">Request |Running > 1 hour</option>

它应该上传的只是请求|正在运行&gt; 1小时

但上传的内容是:请求|正在运行&gt; 1小时1小时'/>

我不知道它在哪里得到另一个 1小时'/&gt;

我尝试删除>并刚刚上传请求|运行1小时而没有超出 1小时'/&gt; 但我需要它以保持一致性

这是我用来上传到db的php代码

<?php
    error_reporting(0);
    require 'include/DB_Open.php';

    $Category3 = mysql_real_escape_string ($_POST['Category3']);

    if (isset($ABC))    
    {
    $sql="INSERT into XXX category_2
          VALUES ('".$Category3."')";
    $result=mysql_query($sql)or die(mysql_error());
    }
?>

这是我的检索数据的代码

$sql="SELECT category_2
        FROM XXX
        WHERE resolved_date BETWEEN '" . $date . "' AND '" . $date1 . "'
        ORDER BY resolved_date";
$myData = mysql_query($sql);

//to count if there are any results
$numrow = mysql_num_rows($myData);

if($numrow == 0)
{
    echo "No results found.";
}
else
{
    echo "$numrow";
}
{

echo "<table width='auto' cellpadding='1px' cellspacing='0px' border=1 align='center'>
<tr>
<th align='center'><strong>Category 3</strong></th>
</tr>"; 

while($info = mysql_fetch_array($myData)) 
{
echo "<form action='retrieve.php' method='post'>";

echo"<tr>"; 
echo  "<td align='center'>" . $info['category_2'] . "<input type=hidden name=category_2 value=" . $info['category_2'] . "' /> </td>";
echo "</tr>"; 
echo "</form>";
}
}
echo "</table>"; 

1 个答案:

答案 0 :(得分:2)

每当您显示可能包含特殊HTML字符的文本时,您应该使用htmlentities()对其进行正确编码,因此这些字符不会导致HTML被错误分析(或者更糟糕的是,允许脚本注入)。

$cat2 = htmlentities($info['category_2']);
echo  "<td align='center'>" . $cat2 . "<input type='hidden' name='category_2[]' value='" . $cat2 . "' /> </td>";

'之后你也错过了value=。我已经添加了(并引用了所有其他属性)。

由于您要创建具有相同名称的多个输入,因此需要为它们指定一个数组样式的名称,以便服务器脚本可以获取所有值。 $_POST['category_2']将是一个数组。