서버에서 데이타를 가져올 때
본문
서버에서 데이터를 가져 올 때 해당 페이지마다
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "dbname";
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
이렇게 서버에 접속해야 하나요?
그리고 이런 서버 정보가 저장되어 있는 파일은 어떻게 하면 보안이 되나요?
완전초보 질문인데 부탁드립니다.
답변 1
그누보드5 버전을 참조하세요.
그누보드5 에서는 data/dbconfig.php 파일 안에 데이터베이스 정보를 저장하고 있습니다.
예를 들면
<?php
if (!defined('_GNUBOARD_')) exit;
define('G5_MYSQL_HOST', 'localhost');
define('G5_MYSQL_USER', 'root');
define('G5_MYSQL_PASSWORD', 'autoset');
define('G5_MYSQL_DB', 'db_01');
define('G5_MYSQL_SET_MODE', true);
와 같은 형태로 구성이 되어 있고요.
if (!defined('_GNUBOARD_')) exit; 에서 상수 정의를 통해서 개별 페이지로 접근을 막아주고 있습니다.
물론 여기에서 사용하는 상수인 _GNUBOARD_는 config.php 파일에서
define('_GNUBOARD_', true); 로 정의되어서 config.php 파일을 호출하지 않는 개별파일은 접근을 막고 있습니다.
그리고 DB정보는 사용시마다 적어주는 것이 아니라 include로 호출해서 사용합니다.
이 부분은 common.php파일에서
$dbconfig_file = G5_DATA_PATH.'/'.G5_DBCONFIG_FILE;
if (file_exists($dbconfig_file)) {
include_once($dbconfig_file);
include_once(G5_LIB_PATH.'/common.lib.php'); // 공통 라이브러리
$connect_db = sql_connect(G5_MYSQL_HOST, G5_MYSQL_USER, G5_MYSQL_PASSWORD) or die('MySQL Connect Error!!!');
$select_db = sql_select_db(G5_MYSQL_DB, $connect_db) or die('MySQL DB Error!!!');
// mysql connect resource $g5 배열에 저장 - 명랑폐인님 제안
$g5['connect_db'] = $connect_db;
sql_set_charset('utf8', $connect_db);
if(defined('G5_MYSQL_SET_MODE') && G5_MYSQL_SET_MODE) sql_query("SET SESSION sql_mode = ''");
if (defined(G5_TIMEZONE)) sql_query(" set time_zone = '".G5_TIMEZONE."'");
}
처럼 구성된 내용이 있는 common.php파일을 DB정보와 연결이 필요한 파일에서 include해서 사용하고 있습니다.