代码之家  ›  专栏  ›  技术社区  ›  Val

PHP输出的最佳实践

  •  2
  • Val  · 技术社区  · 14 年前

    我在想,下面这个例子的最佳实践是什么。

    <?php
    
    if(isset($_POST['query'])){
      $out = $_POST['query'];
    }
    
    ?>
    <div><?php echo $out; ?></div>
    <input type="text" value="<?php echo $out; ?>" />
    

    使用上述代码会对网站造成威胁。或者在使用之前我需要准备输出。我所说的“准备”是指对其进行编码或转义特殊字符。

    我知道您需要转义它并验证输入以供db使用,输出它如何?

    3 回复  |  直到 14 年前
        1
  •  3
  •   Gumbo    14 年前

    是的,因为你要把它放到HTML中,所以你应该使用适当的编码HTMLs特殊字符 htmlspecialchars :

    if (isset($_POST['query'])) {
        $out = htmlspecialchars($_POST['query']);
    }
    

    除此之外, $out 仅当 $_POST['query'] 如果存在默认值,则应该考虑 $后[“查询”] 不存在。否则,当 register globals 如果已启用(这是个坏主意),则可以通过URL查询字符串设置该变量 ?out=… .

        2
  •  2
  •   Community Romance    7 年前
        3
  •  1
  •   Barkermn01    14 年前

    不知道最佳实践,这取决于我喜欢的编码器

    echo (isset($_POST['query']))? htmlspecialchars($_POST['query']):"";