两个项目共享相同的用户帐户

时间:2012-09-26 13:55:42

标签: php mysql codeigniter session cookies

我有两个独立的项目/网站,每个项目/网站都有自己的数据库。 我希望两者之间都有一个共同的用户注册。 我应该为用户帐户创建第三个数据库吗?

我该如何实现?我正在使用PHP Code Igniter(查看Ion Auth)这也是另一个问题,因为数据库配置必须在php配置文件中设置,我将如何在两者之间交替。

2 个答案:

答案 0 :(得分:2)

http://codeigniter.com/user_guide/database/connecting.html

在代码中:

应用/配置/ database.php中:

$db["default"]["hostname"] = "localhost";
$db["default"]["username"] = "username";
$db["default"]["password"] = "password";
$db["default"]["database"] = "database";

$db["userdatabase"]["hostname"] = "localhost";
$db["userdatabase"]["username"] = "username";
$db["userdatabase"]["password"] = "password";
$db["userdatabase"]["database"] = "database";

在你的模特中:

$this->load->database('userdatabase');
// Do user stuff
$this->load->database('default');

答案 1 :(得分:1)

创建第三个数据库(可能)会让你陷入困境。两者都必须“远程”连接,当你们想要同时更新同一条记录时,你会怎么做。可管理,但如果你有一个作为主人,另一个作为奴隶,那么会更简单。

您有三种选择:

1)始终对“Master”数据库进行身份验证 - 因此,即使您主要使用“Database Slave”,也会跳转到“Database Master”进行身份验证/注册/密码更改等,然后恢复为“Slave” “对于其他行动。当发生变化时,您需要将对“Master”的用户和会话表的更改复制到“Slave”中,但这很小,可以内置到您的模型中。这是我最常使用的模型,也可以通过一些游戏来跳转域/服务器。

2)始终对本地数据库进行身份验证,并将更改从一个复制到另一个。虽然它可以工作,但你可以弄得一团糟,因为你不确定哪一个是最新的。

3)恢复“Master”和“Slave”选项,您可以设置联合表(http://dev.mysql.com/doc/refman/5.0/en/federated-storage-engine.html) 。联合故事支持“更新”,因此当您更新“奴隶”时,您实际上正在更新主人。但除非您的数据库位于同一台服务器上,并且考虑到您的会话表(假设您正在进行无状态/数据库处理的会话)将在每次调用时访问并经常更新,我会避免使用此选项。只是说'这是一个选择,但是。