需要一个类用于创建与mysqli的数据库连接php

时间:2012-10-26 13:57:57

标签: php mysql mysqli

我需要创建一个连接数据库的类。我知道硬编码数据库信息很糟糕,例如:

$user = "xxx";
$password = "yyy";
$server = "zzz";
$dbname = "name";

mysql_connect($user,$password,$server);
mysql_select_db($dbname);

这就是为什么我使用"包括"如:

include "config.php" 

包含所有需要的变量,然后我可以使用mysql_connect。但据我所知,这也是一种不好的做法。我怎样才能使用mysqli类(扩展它?)最简单的方法,当然最安全的方法?

感谢任何提示

4 个答案:

答案 0 :(得分:2)

最后,您必须将连接配置参数放在代码中。如果它在一个常数,一个等等中都无关紧要......

我不认为硬编码这些价值会带来安全风险。您的PHP脚本在服务器中。因此,它们受文件系统权限和系统权限的保护。 如果某人可以访问您的文件,则安全问题出在服务器而不是PHP脚本中。

使用PDO,它具有处理数据库访问的类。

来自PDO php manual

  

PHP数据对象(PDO)扩展定义了一个轻量级,一致的   用于访问PHP中的数据库的接口。

     

通过创建PDO基础的实例来建立连接   类。

     

示例#1连接到MySQL

 <?php
 $dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass);
 ?>

答案 1 :(得分:1)

我现在无法回答你的问题, 但作为提示,请观看此视频。

这是一个可以帮助你的PHP安全系列:

https://www.youtube.com/watch?v=Nx-g-0ynP_I

如果无效,请在youtube上搜索PHP安全性第1部分!

希望它有所帮助!

答案 2 :(得分:1)

对于硬编码数据库常量没有什么特别不安全的(正如其他人所说,它们必须在某个地方......)尽管你注意到将这些值放在一个单独的文件中是个好主意。我建议更进一步,不要在源代码管理中跟踪此文件,而是创建一个模板,例如config.base.php,您将其复制到config.php并为每台服务器配置。还有其他选项(我工作的地方,我们跟踪这些文件,但命名为$(hostname).php,这允许一些聪明的导入链,但不是必需的)但这是一个简单,安全的,具有以下优势:将这些值保留在版本控制之外。这允许代码可以在不提供这些密码的情况下进行分发。

您需要关注的更大的安全问题是锁定面向前方的MySQL用户,使其只拥有您的webapp所需的权限。例如,通常情况下,您的网站是CREATEALTER表格是一个坏主意,所以通常不要将这些权限授予您的网站使用的用户,并且拥有您可以直接使用架构更改脱机的不同,更高权限的用户。

对于您的问题,我在common.php课程中执行以下操作来创建我的MySQLi连接:

require_once($_SERVER['DOCUMENT_ROOT'].'/includes/config.php');
$db = @new mysqli(MYSQL_HOST,MYSQL_USER,MYSQL_PASS,MYSQL_DB);
if(mysqli_connect_errno())
{
    if(DEBUG_MODE)
        $template->error('Failed To Connect To Database: '.mysqli_connect_errno().': '.mysqli_connect_error());
    else
        $template->error('Failed To Connect To Database.  Try reloading the page.  If this error persists, <a href="/contact.php">let me know</a>.');
}

答案 3 :(得分:0)

我猜所有提出的答案都是正确的,但是出于我的目的和情况,我创建了一个文件,其中包括mysqli对象创建和与DB的连接以及一些用于转义数据的函数。我只是将文件包含在需要数据库连接的所有其他.php中,并且它非常易于使用和执行查询。如果有人需要更多信息或示例,请告诉我。

感谢所有