php 过滤表单特殊字符实例

时间:2016-06-15
php表单提交在WEB开发中使用频率非常高,安全的表单提交必须带有过滤特殊字符的功能,本文章向大家介绍php如何过滤表单中的特殊字符,需要的朋友可以参考一下。

PHP处理表单提交特殊字符的方法有很多种,比如htmlspecialcharsaddslashesstripslashesstrip_tags、mysql_real_escape_string等等。

请看下面过滤表单特殊字符实例:

<html>
<body>
    <?php
      if ($_POST['submitted'] == "yes"){
        $yourname = $_POST['yourname'];

        $yourname = trim ($yourname);

        $yourname = strip_tags ($yourname);

        $yourname = htmlspecialchars ($yourname);

        $yourname = addslashes ($yourname);
        
        echo $yourname . "<br />";
        ?><a href="index.php">Try Again</a><?php
      }
      if ($_POST['submitted'] != "yes"){
        ?>
        <form action="index.php" method="post">
          <p>Example:</p>
          <input type="hidden" name="submitted" value="yes" />
          Your Name: <input type="text" name="yourname" maxlength="150" /><br />
          <input type="submit" value="Submit" style="margin-top: 10px;" />
        </form>
        <?php
      }
    ?>
  </div>
</body>
</html>

一般我是这样使用的:

kindedit编辑器:从post来的进行addslashes后就可存入数据库了,取出后直接echo即可

普通的文本:

  1. htmlspecialchars接着addslashes存入数据库,取出后直接echo即可。
  2. addslashes存入数据库,取出后htmlspecialchars输出。

说明:

  1. addslashes仅仅是为了让原来的字符正确地进入数据库。
  2. htmlspecialchars是吧html标签转化掉。

额外:

magic_quotes_gpc函数在php中的作用是判断解析用户提示的数据,如包括有:post、get、cookie过来的数据增加转义字符“\”,以确保这些数据不会引起程序,特别是数据库语句因为特殊字符引起的污染而出现致命的错误

在magic_quotes_gpc=On的情况下,如果输入的数据有

单引号(’)、双引号(”)、反斜线()与 NUL(NULL 字符)等字符都会被加上反斜线。这些转义是必须的,如果这个选项为off,那么我们就必须调用addslashes这个函数来为字符串增加转义。

正是因为这个选项必须为On,但是又让用户进行配置的矛盾,在PHP6中删除了这个选项,一切的编程都需要在magic_quotes_gpc=Off下进行了。在这样的环境下如果不对用户的数据进行转义,后果不仅仅是程序错误而已了。同样的会引起数据库被注入攻击的危险。所以从现在开始大家都不要再依赖这个设置为On了,以免有一天你的服务器需要更新到PHP6而导致你的程序不能正常工作。