我有CI脚本,目前每个用户都有自己的子域和自己的mysql数据库。
现在,我希望有一个登录页面,可以根据登录详细信息检查数据库,并连接到用户应该运行的特定数据库。
所有CI脚本都相同,但数据库数据不同。
我正在考虑创建一个新的数据库表,我将链接哪个用户在哪个数据库中。
有人知道如何创建这个吗?
答案 0 :(得分:1)
只需使用一个表创建一个数据库,让我们将其称为数据库表,并使用用户/数据库数据的凭据填充它。然后,只需在db_connection.php中选择正确的详细信息 - 页面:
<?php
session_start();
$connectlogin = new mysqli ("HOST","USER_FOR_CREDENTIAL_DB","PASS_FOR_CREDENTIAL_DB","DB_CREDENTIAL_DB") or die ("nope");
if (isset($_POST['username'])) {
$username = mysqli_real_escape_string($_POST['username']; //or whatever you POST from your login
}
else
{
$username = $_SESSION['username'];
}
$sqla = "SELECT user_db, user_db_pass, user_db_user, user_name FROM databasetable WHERE user_name LIKE '$username'";
if ($result = $connectlogin -> query($sqla)) {
while ($row = $result->fetch_assoc()) {
$user_db = $row['user_db'];
$user_db_pass = $row['user_db_pass'];
$user_db_user = $row['user_db_user'];
}
/* free result set */
$result->free();
}
$connectlogin ->close();
$sql = new mysqli ("HOST",$user_db_user, $user_db_pass,$user_db);
$sql -> set_charset ( 'utf8' );
if ($sql->connect_errno)
{echo "NOPE 2nd";}
$_SESSION['username'] = $username;
?>
出于安全原因,应加密所有凭据。并且不加密就不存储在数据库中。您需要指定加密。