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而导致你的程序不能正常工作。

收藏 打印