ホームページ > バックエンド開発 > PHPチュートリアル > PHP PDO でセット名 utf8 を安全に実行する正しい方法

PHP PDO でセット名 utf8 を安全に実行する正しい方法

WBOY
リリース: 2016-06-23 13:28:04
オリジナル
1632 人が閲覧しました

コード

<?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 を最新の安定バージョンにアップグレードし、上記のコードを使用してインジェクションの問題を解決します)

著作権表示: この記事はブロガーによるオリジナルの記事ですブロガーの許可を得ていませんので、転載は禁止です。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート