内部带有php代码的html回显

内部带有php代码的html回显,php,html,Php,Html,我只得到一个下拉框,里面没有任何数据。请帮帮我,我做错了什么?是的,这不起作用-有很多问题,你的“模板”代码将被解析,这将导致错误,你不能嵌套Wesley Murch很接近,但缺少一些东西:围绕值的引号,以及使用htmlentities来防止XSS注入 <?php $sample = 0; if($sample == 0) { $displayPre = '<td><label>Privileges:</label></td&

我只得到一个下拉框,里面没有任何数据。请帮帮我,我做错了什么?

是的,这不起作用-有很多问题,你的“模板”代码将被解析,这将导致错误,你不能嵌套
Wesley Murch很接近,但缺少一些东西:围绕值的引号,以及使用
htmlentities
来防止XSS注入

<?php
$sample = 0;
if($sample == 0)
{   
    $displayPre     = '<td><label>Privileges:</label></td>
      <td><select name = "Privilege" id = "Privilege" multiple="multiple">';
    $displayPost    = '</select></td>
      </tr>
      <tr>';
    $PrivilegeNames = mysql_query("SELECT * FROM privilege");

    echo $displayPre;

    while($row = mysql_fetch_array($PrivilegeNames))
        echo '<option value =' . $row['privilege_ID'] . '>' . $row['privilege_name'] . '</option>';

    echo $displayPost;
}

?>
$displayouter='Privileges:';
$PrivilegeNames=mysql_查询(“选择*来自特权”);
while($row=mysql\u fetch\u数组($PrivilegeNames)){
$displayouter.=''.htmlentities($row['privilege_name'])。';
}
$displayouter.='';
echo$displayouter;

我还没有测试语法,但您犯了一些错误

$displayouter = '<td><label>Privileges:</label></td><td><select name = "Privilege" id = "Privilege" multiple="multiple">';

$PrivilegeNames = mysql_query("SELECT * FROM privilege");
while($row = mysql_fetch_array($PrivilegeNames)) {
    $displayouter .= '<option value="' . htmlentities($row['privilege_ID']) . '">' . htmlentities($row['privilege_name']) . '</option>';
}

$displayouter .= '</select></td></tr><tr>';

echo $displayouter;

特权:

您做错了一切。示例只是一个供我使用的临时变量,我只是暂时将其设置为零,以便显示。我只想在它满足if之后显示动态下拉列表,现在它只是一个示例数据。请不要对新代码使用
mysql.*
函数。它们不再得到维护,社区已开始恢复。看到了吗?相反,你应该学习并使用或。如果你不能决定,将帮助你做出选择。如果你想学,谢谢,我会研究你的建议。你能解释一下你所说的安全漏洞是什么意思吗?我是php的新手。这段代码的问题是什么?我不应该说“很多”-主要是,我的意思是,每当您将一些未知数据输出到HTML时,比如来自外部源(如数据库或文本文件)的变量,您应该(始终)在其上使用
htmlspecialchars()
,以便转义任何HTML字符,或者有人可以通过将javascript代码放入数据库来运行它。它比这更深入(取决于您将输出放入HTML的位置…),但这是您应该养成的习惯。我知道这看起来很枯燥,但很重要。好吧,我明白了,把htmlspecialchar放在转义字符上,这样他们就不会有机会使用javascript访问数据库。明白了,谢谢,诸如此类。举一个非常简单的例子,假设有人输入了
作为
特权\u名称
。如果你不逃过它,它会打破你的页面。如果变量包含HTML代码(您无法知道),它可能会产生不良影响,包括(但不限于)执行javascript代码-因此始终对其进行转义。数据仍然不会显示,但滚动条会更新为具有值
<?php
$sample = 0;
if($sample == 0)
{   
    $displayPre     = '<td><label>Privileges:</label></td>
      <td><select name = "Privilege" id = "Privilege" multiple="multiple">';
    $displayPost    = '</select></td>
      </tr>
      <tr>';
    $PrivilegeNames = mysql_query("SELECT * FROM privilege");

    echo $displayPre;

    while($row = mysql_fetch_array($PrivilegeNames))
        echo '<option value =' . $row['privilege_ID'] . '>' . $row['privilege_name'] . '</option>';

    echo $displayPost;
}

?>
$displayouter = '<td><label>Privileges:</label></td><td><select name = "Privilege" id = "Privilege" multiple="multiple">';

$PrivilegeNames = mysql_query("SELECT * FROM privilege");
while($row = mysql_fetch_array($PrivilegeNames)) {
    $displayouter .= '<option value="' . htmlentities($row['privilege_ID']) . '">' . htmlentities($row['privilege_name']) . '</option>';
}

$displayouter .= '</select></td></tr><tr>';

echo $displayouter;
<?php 
$sample = 0; 
     if($sample ==0) 
     {    
          $displayinner = '<option value =' . $row['privilege_ID'] . '>' . $row['privilege_name'] . '</option>';
?>
          <td><label>Privileges:</label></td> 
             <td><select name = "Privilege" id = "Privilege" multiple="multiple"> 
<?php
                     $PrivilegeNames = mysql_query("SELECT * FROM privilege"); 
                     while($row = mysql_fetch_array($PrivilegeNames)) 
                          echo $displayinner; 
?>
                </select></td> 
             </tr> 
             <tr>
<?php
     } 
?>