连接
$ _pdo = new Data('mysql:host ='。$ db_host。'; dbname ='。$ db_name。'; port ='。$ db_port,$ db_user,$ db_pass,array(PDO :: MYSQL_ATTR_INIT_COMMAND =>'SET NAMES'。$ charset));
变量来自于形式。 如果我不去掉这个变量,用户可以进行sql注入?
如果您接受来自表单的输入以创建连接,那么在使用它之前可能会使用一些清理功能来清理它。 如果将其存储在文本文件或数据库中,在保存之前进行消毒是一个好主意,以及在使用之前。
http://php.net/manual/en/function.filter-var.php
$db_host = filter_var($db_host,FILTER_SANITIZE_FULL_SPECIAL_CHARS);
相当于使用ENT_QUOTES设置调用htmlspecialchars()。 编码引号可以通过设置FILTER_FLAG_NO_ENCODE_QUOTES来禁用。 像htmlspecialchars()一样,此过滤器知道default_charset,并且如果在当前字符集中检测到构成无效字符的字节序列,则整个字符串将被拒绝,从而产生0长度的字符串。 http://www.php.net/manual/en/filter.filters.sanitize.php
在任何情况下,连接凭证都不应该来自用户。
您必须将它们存储在您的服务器中的某个配置文件中。 然后使用连接字符串。
请注意,字符集应该在DSN中设置,而不是选项。
include 'settings.php';
$dsn = "mysql:host=$db_host;dbname=$db_name;port=$db_port;charset=$charset";
$pdo = new Data($dsn, $db_user, $db_pass);
链接地址: http://www.djcxy.com/p/93793.html
上一篇: connection