Joh*_*rgo 2 php mysql mysqli character-encoding
当时,我mysqli->real_escape_string在PHP.net#mysqli_real_escape_string中阅读有关内容。几乎没有一行,我无法理解它们的含义,以及在使用时哪个字符集是安全的real_escape_string
注意安全性:默认字符集
必须在服务器级别或使用API函数mysqli_set_charset()设置字符集,才能影响mysqli_real_escape_string()。有关更多信息,请参见字符集的概念部分。
是否有人可以解释我,不管utf-8或者default latin是安全与否: -
这是他们的代码段,在这里描述了情况http://in1.php.net/manual/en/mysqli.real-escape-string.php
这是什么意思 ?
<?php
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");
// Will not affect $mysqli->real_escape_string();
$mysqli->query("SET NAMES utf8");
// Will not affect $mysqli->real_escape_string();
$mysqli->query("SET CHARACTER SET utf8");
// But, this will affect $mysqli->real_escape_string();
$mysqli->set_charset('utf8');
?>
Run Code Online (Sandbox Code Playgroud)
谢谢
任何字符集(如果您正在使用) mysqli_set_charset()
另外,即使您不知道utf-8,默认值latin也是安全的。
该过程涉及两个方面。服务器和客户端。客户是您的PHP脚本。因此,仅仅因为转义是在客户端完成的(即在PHP中),PHP必须知道如何对数据进行转义。正是这样mysqli_set_charset()-它要么让服务器知道传入的数据编码,要么让服务器知道real_escape_string编码的数据。
虽然SET NAMES查询仅执行工作的一部分,但仅通知服务器,而real_escape_string保持默认状态。但是,无论哪种utf-8还是default latin都是无懈可击的。
| 归档时间: |
|
| 查看次数: |
663 次 |
| 最近记录: |