2009-07-10 5 views
0

나는 MySQL/PHP 애플리케이션을 가지고있다. SAS를 판매하고 싶습니다. 여러 데이터베이스를 사용할 수있는 호스팅 회사를 생각 중입니다. 내가 로그인 한 페이지를 원하고 데이터베이스로 가져갑니다. 나는 동일한 구조를 가진 많은 데이터베이스를 가질 것이다. 그 폴더로 그들을 전환 할 수있는 방법이 필요합니다. (나는 CSS와 같은 코드를 수정할 수 있습니다.) 데이터베이스를 운영합니다. 로그인에 마스터 테이블을 사용할 수 있지만 데이터베이스에 연결하는 방법은 무엇입니까? 나는 보안에 대해 우려하고있다. 예 : 3 명의 고객이 있다고 가정 해 보겠습니다. A B C 아파치 서버에 3 개의 폴더를 설정하고 거기에 코드를 복사하고 new_db_a, new_db_b, new_db_c와 같은 고유 한 데이터베이스 이름을 설정하십시오. 로그에 로그인 할 때 메모리 변수에서 수행하면 이제 그의 자리로 데려다 줄 것입니다. 그는 URL을보고 다른 편지를 쉽게 대체하고 다른 회사의 데이터베이스를 운영 할 수 있습니다.복수의 mysql 데이터베이스 설정

필자는 Perl, PHP 등을 사용하여 기꺼이이 작업을 수행합니다. 이 작업을 수행하는 가장 좋은 방법은 무엇입니까?

+0

SaaS (Software as a Service)에 대해 이야기하고 있기 때문에 "sas"에서 "saas"로 질문의 태그를 다시 지정했습니다. 이 문제가 잘못 되었다면 의견을 남겨주세요. 다시 변경하겠습니다. –

답변

0

이것은 고전적인 추상화 문제입니다. 기본적으로 응용 프로그램뿐만 아니라 선택 화면에서도 데이터베이스 선택 프로세스를 추상화해야합니다.

'문제 공간'이라는 용어를 생각해보십시오. 각 응용 프로그램에는 고유 한 데이터베이스 (예 : 데이터베이스)가 있으며 고객 로그인 시스템은 하나 더 있습니다. 다른 데이터베이스를 사용하는 데는 아무런 문제가 없습니다. 각 로그인과 연관된 것은 데이터베이스 연결 정보입니다. 즉, 사용자가 로그인 한 상태 (그리고 로그인 한 사용자)와 함께 PHP 세션에 데이터베이스 정보를 저장할 수 있습니다.

이제 다른 응용 프로그램은 세션에서 데이터베이스 정보를 찾는 방법을 배우려면 데이터베이스 계층 [1]이 필요합니다. 실제로 데이터베이스 이름뿐 아니라 서버 이름, 로그인 및 비밀번호를 저장하는 경우 일부 고객을 동일한 데이터베이스 서버에, 일부 고객을 다른 서버에 자유롭게 배치 할 수 있습니다. 예를 들어 MySQL 사용 권한을 얻었습니다 올바른 (어렵지 않다).

아마도이 연고에서 가장 큰 파리는 선택된 응용 프로그램이 PHP 세션 정보 자체를 제어하기로 결정한 경우 일 것입니다. 이것을 해결할 수있는 몇 가지 방법이 있습니다. 하나는 올바른 데이터베이스에 연결하는 데 필요한 정보를 자체 세션에 복사하는 것입니다. 두 번째는 선택 세션이 세션 관리를 개별적으로 그리고 가능하면 수동으로 수행하는 것입니다. 그러나 데이터베이스 정보를 쿠키에 저장하지 마십시오. 결정된 사용자가이를 변경할 수있을뿐만 아니라 안전하지 않은 위치 인 브라우저에 보안을 적용 할 수 있습니다.

[1] 적절한 데이터베이스 레이어가 있습니다. 그렇습니까? 그리고 당신이 mysql_query() 핸들러 뒤에 주문한 것과 PDO와 같은 것을 모두 가지고 있음을 의미합니다.