>백엔드 개발 >PHP 튜토리얼 >PHP PDO 安全执行 set names utf8 的正确方法

PHP PDO 安全执行 set names utf8 的正确方法

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB원래의
2016-06-23 13:28:041643검색

代码

<?phpdefine('DB_HOST', 'localhost');define('DB_SCHEMA', 'test');define('DB_USER', 'test');define('DB_PASSWORD', 'test');define('DB_ENCODING', 'utf8');$dsn = 'mysql:host=' . DB_HOST . ';dbname=' . DB_SCHEMA;$options = array(    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,);if( version_compare(PHP_VERSION, '5.3.6', '<') ){    if( defined('PDO::MYSQL_ATTR_INIT_COMMAND') ){        $options[PDO::MYSQL_ATTR_INIT_COMMAND] = 'SET NAMES ' . DB_ENCODING;    }}else{    $dsn .= ';charset=' . DB_ENCODING;}$conn = @new PDO($dsn, DB_USER, DB_PASSWORD, $options);if( version_compare(PHP_VERSION, '5.3.6', '<') && !defined('PDO::MYSQL_ATTR_INIT_COMMAND') ){    $sql = 'SET NAMES ' . DB_ENCODING;    $conn->exec($sql);}
PDO 注入方法

其他的比如直接执行 set names utf8是老版本的PHP,因为不支持绑定,所以才只能这样。但存在注入漏洞。
老版本PHP 的 PDO 注入方法,链接:
(将PHP升级到最新稳定版本,再使用如上代码,可以解决该注入问题)

版权声明:本文为博主原创文章,未经博主允许不得转载。

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.