php [php:escape json_encode()] #php #js

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php [php:escape json_encode()] #php #js相关的知识,希望对你有一定的参考价值。

// 配列やオブジェクトなどのデータをJavaScriptに直接渡すときは、json_eocode()したものをそのままechoする
echo json_encode($data);

// このとき、悪意のコードの実行を防ぐためにjson_encode()のエスケープオプションを指定することでエスケープ可能
echo json_encode($array, JSON_HEX_TAG | JSON_HEX_AMP | JSON_HEX_APOS | JSON_HEX_QUOT);

// クラスメソッドにしてみる
class Protect {  
  /**
   * json_h
   * json_encode with Escape
   * @param mix $source
   * @return str json-string
   */
  static public function json_h($source,$option = JSON_HEX_TAG | JSON_HEX_AMP | JSON_HEX_APOS | JSON_HEX_QUOT){
    return json_encode($source,$option);
  }
}

// Protectクラス json_h() テスト
$Protect = new Protect();

class Item {
  public $properties = ['name','price'];
}

$Item = new Item();
$name = 'item1';
$price = '1000';
$mail = 'unaristocratic@forwardal.org';
$msg = "<script>alert('xss is here!!');</script>";

$json = $Protect::json_h(compact($Item->properties,'mail','msg'));

var_dump($json);

以上是关于php [php:escape json_encode()] #php #js的主要内容,如果未能解决你的问题,请参考以下文章

javascript Escape特殊字符(用于JS的PHP)

PHP MYSQLi real_escape_string [关闭]

PHP : CodeIgniter mysql_real_escape_string 警告

HTML 表单未将值传递给 PHP (mysqli_real_escape_string)

htmlentities() 和 mysql_real_escape_string() 是不是足以清理 PHP 中的用户输入? [复制]

MediaWiki:PHP 警告:mysqli::real_escape_string() 期望参数 1 是字符串,给定对象