저는 PHP를 처음 사용하기 때문에이 질문에 대한 답변은 PHP의 기본 사항에 대한 간단한 설명으로 해결할 수 있습니다.PHP에서 데이터베이스 전환
내 응용 프로그램에 대해 사용자별로 여러 데이터베이스를 설정하고 싶습니다. 사용자가 로그인하면 DB-1에 대해 사용자를 인증하고 다른 데이터베이스에 사용할 데이터베이스를 검색합니다. 다음과 같이
<?php
$db_hostname = 'localhost';
$db_database = 'testing';
$db_username = 'someuser';
$db_password = 'somepass';
?>
을 한 후 나는 또 다른 PHP 파일 정의 :
<%php
require_once 'login.php';
$db_server = mysql_connect($db_hostname, $db_username, $db_password);
if (!$db_server) die ("Unable to connect to MySQL: " . mysql_error());
mysql_select_db($db_database)
or die ("Unable to select database: " . mysql_error());
function check_login($user, $password) {
$user = mysql_entities_fix_string($user);
$password = mysql_entities_fix_string($password);
$password = secure_password($password);
$query = "SELECT DB_NAME, DB_USER FROM USERS WHERE USER_NAME='$user' AND PASSWORD='$password'";
$result = mysql_query($query);
if (!$result) 0; //no access to the database
elseif (mysql_num_rows($result)) {
$row = mysql_fetch_row($result);
$db_database = $row[0];
$db_username = $row[1];
$db_password = $password;
return 1; //login succeeded
} else {
return 2; //login failure
}
}
?>
내가 궁금하면 함수의 종료에 관한 다음과 같이
나는 나의 login.php 파일을 정의 check_login(). USERS 테이블이 데이터베이스의 이름 (예 : 'db123522')과 해당 데이터베이스의 사용자 이름 (예 : 'jsmith')을 반환하고 비밀번호가 해시 및 해싱 된 비밀번호와 같을 것이라고 가정합니다. 즉, 각 사용자는 생성 된 사용자 이름과 암호가 해시 된 + 해시 된 암호와 일치하는 자체 데이터베이스를 갖게됩니다.
이 경우 두 번째 PHP 파일에 데이터베이스에 액세스 할 수있는 다른 기능이 있다면 login.php의 데이터베이스 정의가 아닌 새 데이터베이스 정의를 사용할 수 있도록하려면 어떻게해야합니까?
이 PHP 파일의 함수 호출과 다음 호출 사이에 메모리에 남아있는 것은 무엇이며 이는 사용자를 구별 할 수 있습니까? 다음 호출에서 적절한 데이터베이스를로드 할 수 있도록이 정보 중 일부를 세션에 넣어야하는 경우 응용 프로그램의 보안을 손상시키지 않고 최소한의 정보만으로도이를 수행 할 수 있습니다 (즉, 나는 분명히 세션에 암호를 넣고 싶지 않다)?
이 작업을 수행하는 더 좋은 방법이 있습니까 (누군가가 나를 설명하거나 올바른 방향으로 나를 가리킬 수 있습니까?).
왜 각 사용자마다 다른 DB를 사용 하시겠습니까? – mpen
중복 : http://stackoverflow.com/questions/1580540/max-tables-design-pattern –
다른 복제본 : http://stackoverflow.com/questions/1618792/mysql-using-unique-table-names-vs- using-ids –