2014-06-12 96 views
0

我開發一個簡單的PHP應用程序,它需要連接到數據庫 這是造成部分代碼連接到數據庫避免硬編碼證書mysqli php?

private $mysqli; 

public function __construct() 
{ 
    $this->mysqli = new \mysqli("localhost", "root", "password", "mydb"); 
} 

我的問題:如何避免硬編碼的憑據,客戶要求我以避免這個?

我應該在哪裏設置這些設置?

+1

如果是這樣的話,那麼創建一個配置文件 – user1978142

+0

如果客戶端不需要硬編碼憑據,他是如何讓他們進入?他想編輯它們嗎?或者讓他們每次交互式地通過網絡表單輸入並將它們存儲在客戶端瀏覽器的cookie中? –

+0

我會建議和ini或XML配置文件,如果它需要手動編輯,或者序列化JSON文件,如果編程方式處理 – Steve

回答

1

使用config文件:

require_once("../path-to-your-config/config.php"); 

用法示例:

require_once("../path-to-your-config/config.php"); 

class ABC { 

    private $mysqli; 

    public function __construct() 
    { 
     $this->mysqli = new \mysqli(Conf::HOST, Conf::USER, Conf::PASSWORD, Conf::DB); 
    } 
} 
1

正如@ user1978142所說,配置文件最適合存儲這種信息。最好這個配置文件應該存儲在服務器目錄之外(所以沒有人可以意外地獲得外部訪問)。此外,你應該確保訪問此文件僅限於選擇用戶

0

創建一個名爲credentials.php一個單獨的文件,並把它放在一個文件夾不是root文件夾或限制對文件夾及其內部文件的訪問。在這個文件中,分配所有你想要的值$server,$username,等,只要你需要它們,只需使用require_once函數,以便你可以訪問它們。

如果是從一個數據庫更改爲另一個數據庫,您也可以考慮使用PDO

+1

命名文件.credentials.php - 大多數Apache服務器不提供以點開頭的文件,這增加了一點安全。並使其只能讀取服務器進程運行的守護程序用戶帳戶。 –

+0

@AlexMonthy當我聽到這樣的迷信時,我總是會問這個問題:當然,你總是按照這個建議自己,是不是? –

+0

@YCS:這取決於。對於我以後不監督的客戶工作,是的。爲了我自己的目的,沒有。但是,我只對自己負責。 –