我有CI脚本,目前每个用户都有自己的mysql数据库自己的子域。
现在,我希望有一个单一的登录页,将检查数据库的登录详细信息,并连接到该特定的数据库,用户应该运行。
所有CI脚本都相同,但数据库数据不同。
我正在考虑创建一个新的数据库表,在那里我将链接哪个用户在哪个数据库中。
有谁知道如何创建它吗?
发布于 2014-10-21 05:53:14
只需创建一个包含一个表的数据库,让我们将其称为databasetable,并用user/db数据的凭据填充它。然后,只需在您的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;
?>出于安全原因,所有凭据都应加密。并且在没有加密的情况下不被存储在数据库中。您需要指定加密。
https://stackoverflow.com/questions/26469258
复制相似问题