Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Làm thế nào để tạo tệp cấu hình chung?

Mọi người đều có sở thích riêng của họ. Tôi muốn lưu trữ các cài đặt DB của mình trong một tệp .ini bên ngoài webroot và sau đó đặt cho nó giá trị chmod 0600, để ngăn không cho bất kỳ ai ngoài chủ sở hữu đọc nó.

Một ví dụ .ini sẽ giống như sau:

[database]
driver = mysql
host = localhost
;port = 3306
schema = yourdbname
username = dbusername
password = some_pass

Sau đó, bạn có thể sử dụng hàm php parse_ini_file sau đó trong hàm tạo của bạn, bạn chỉ cần đọc nó và phân tích cú pháp nó thành một mảng:

public function __construct($file = 'dbsettings.ini')
{
    // @todo: change this path to be consistent with outside your webroot
    $file = '../' . $file;

    if (!$settings = parse_ini_file($file, TRUE)) throw new exception('Unable to open ' . $file . '.');

    $dns = $settings['database']['driver'] .
    ':host=' . $settings['database']['host'] .
    ((!empty($settings['database']['port'])) ? (';port=' . $settings['database']['port']) : '') .
    ';dbname=' . $settings['database']['schema'];

    // if not PDO, this part needs to be changed parent::__construct($dns, $settings['database']['username'], $settings['database']['password']);
}

Và viola, bạn có một cách đơn giản và an toàn để thiết lập kết nối cơ sở dữ liệu của mình. Lớp này được lấy từ lớp bộ mở rộng PDO, vì vậy nếu bạn không sử dụng PDO, bạn cần thay đổi dòng đó, nhưng bạn có thể thấy bạn nhận được tên người dùng, v.v. trong $settings mảng.

Tôi RẤT tránh lưu trữ bất kỳ loại thông tin cơ sở dữ liệu nào vào CONSTANT hoặc GLOBAL biến kiểu. Bằng cách này, $settings chỉ có sẵn cho hàm lớp đó và không có gì khác, cung cấp thêm một chút lớp bảo mật.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Chọn hồ sơ từ NOW () -1 Ngày

  2. lỗi 1265. Dữ liệu bị cắt ngắn cho cột khi cố gắng tải dữ liệu từ tệp txt

  3. Phương pháp hay nhất / Tiêu chuẩn để lưu trữ Địa chỉ trong Cơ sở dữ liệu SQL

  4. ER_NOT_SUPPORTED_AUTH_MODE - Máy chủ MySQL

  5. Nối bên trong 2 bảng có cùng tên cột