如何通过php在mysql中插入特殊字符并在html页面上显示

如何将特殊字符插入数据库(MySQL)之类的

注册符号(®)OR
 版权符号(©)或
 商标标志(™)

另外我想在html页面显示原始内容.

我必须在两侧(前端和后端)做什么,请详细说明

哪个功能更有效?

方法1:

$_GET = array_map('trim', $_GET);
$_POST = array_map('trim', $_POST);

if(get_magic_quotes_gpc()){
  $_GET = array_map('stripslashes', $_GET);
  $_POST = array_map('stripslashes', $_POST);  

  $_GET = array_map('strip_tags', $_GET);
  $_POST = array_map('strip_tags', $_POST);  
 }
 else{
  $_GET = array_map('MysqL_real_escape_string', $_GET);
  $_POST = array_map('MysqL_real_escape_string', $_POST);   
 }

方法2:

  foreach ($_POST as $key=>$value){
        if (!get_magic_quotes_gpc()) {
          return addslashes(htmlentities(strip_tags($value),ENT_QUOTES,'UTF-8'));
          } 
          else {
             return htmlentities(strip_tags($value),ENT_QUOTES,'UTF-8');
          }
  }

我有点困惑有什么区别

htmlentities()htlspecialchars(),我必须使用哪一个

插入数据库时​​应该使用哪个函数addslashes()stripslashes()

解决方法:

只需将这些符号添加到文本中,然后将其作为SQL查询执行:

INSERT INTO tbl_name VALUES ("Here's my text: ©®");

当你想要显示它时,网站不会对这些符号做任何事情(但记得至少逃避<,>,&(使用htmlspecialchars())因为它们在XML / SGML(HTML)文档中具有特殊意义)

PS.还记得使用mysql_real_escape_string()转义传递给SQL查询的文本以避免任何sql注入问题.如果您的服务器启用了magic_quotes_gpc,请将其禁用或至少将您的GET / POST / COOKIE数据过滤为其原始值.你应该始终有意识地逃避价值观.

编辑:

根据你的评论…我不记得认情况下是否启用了magic_quotes_gpc,但你可以轻松撤消魔法引号效果.就在PHP代码的最开头,添加如下内容

if (get_magic_quotes_gpc()) {
  array_walk_recursive($_GET, 'stripslashes');
  array_walk_recursive($_POST, 'stripslashes');
  array_walk_recursive($_COOKIE, 'stripslashes');
}

现在每个GPC值应该始终是原始的 – 没有引号 – 所以你必须在将任何变量传递给查询之前手动转义它.

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...