0

希望您能提供帮助,请原谅任何糟糕的编码或任何问题,我对此很陌生,只是想办法让事情正常进行。

也就是说,在我的一个项目中,我有这个代码,它在页面加载时成功地从数据库中填充下拉列表:

<select name="Region" id="Region">
    <option value="">-- Select Region --</option>
    <?php                     
       $region=$POST['Region'];    
       if ($region); {
            $regionquery = "SELECT DISTINCT REGION FROM Sales_Execs ";    
            $regionresult = mysql_query($regionquery);    
            while($row = mysql_fetch_array($regionresult)) {
                echo "<option value=\"".$row['REGION']."\">".$row['REGION']."</option>\n  ";
            }       
       }
     ?>
        <script type="text/javascript">
document.getElementById('Region').value = <?php echo json_encode(trim($_POST['Region']));?>;
        </script>
    </select>

在我现在正在进行的下一个项目中,我需要做同样的事情,所以我复制了上面的代码修改,并放在我的新项目中:

<select name="Sales_Exec" id="Sales_Exec">    
<option value="">-- Select SE --</option>
<?php                     
   $salesexec=$POST['Sales_Exec'];    
   if ($salesexec);    
   {
       $salesexecquery = "SELECT DISTINCT Assigned FROM Data ";    
       $salesexecresult = mysql_query($salesexecquery);    
       while($row = mysql_fetch_array($salesexecresult))
       {
            echo "<option value=\"".$row['ASSIGNED']."\">".$row['ASSIGNED']."</option>\n  ";
        }       
    }
?>
<script type="text/javascript">
 document.getElementById('Sales_Exec').value = <?php echo json_encode(trim($_POST['Sales_Exec']));?>;
</script>

</select>

这第二段代码不起作用......我无法弄清楚为什么我似乎已经复制了所有代码并修改了所有必要的部分,任何人都可以发现有什么问题吗?

谢谢!

4

1 回答 1

0

你不使用$salesexec但它应该是$salesexec=$_POST['Sales_Exec'];(注意$_POST而不是$POST.

数据库中的字段是Assigned(只有第一个字母大写),您正在回显ASSIGNED(全部大写),这是未设置的。

利用

echo "<option value=\"".$row['Assigned']."\">".$row['Assigned']."</option>\n  ";

至于 XSS 漏洞,实际上甚至不需要用 JavaScript 设置值,检查POST你的循环内并直接在选项中设置选择的值:

echo "<option value=\"".$row['Assigned']."\"";
if (isset($_POST['Sales_Exec']) && $_POST['Sales_Exec'] == $row['Assigned']) { 
    echo ' SELECTED';
}
echo ">".$row['Assigned']."</option>\n  ";
于 2012-10-01T15:33:25.887 回答