我正在处理的代码有点令人困惑,因为我没有制作这个代码。但我想要做的是从其他数据库获取登录信息。我不能只修改数据库连接的config.php,因为它会搞乱整个系统。 我尝试通过在mysql_connect上存储不同的变量来连接2个数据库。但在这种情况下,它有点混乱。 还有另一种方法只能在登录过程中更改数据库连接一次吗?
login.php(提交登录信息后的php文件)
include("inc/config.php");
$connection = mysql_connect($hostname, $user, $pass) or die ("Unable to connect!");
$query = "SELECT * FROM clients WHERE name = '$name' AND password = '$password'";
$result = mysql_db_query($database, $query, $connection);
$date_in = date("Y-m-d");
$time_in = date("H:i:s");
$client_accesslogin = $name;
if (mysql_num_rows($result) == 1)
{
session_start();
session_register('time_in');
session_register('date_in');
session_register('client_accesslogin');
session_register('remoteaddr');
$_SESSION['time_in']=$time_in;
$_SESSION['date_in']=$date_in;
$remoteaddr = $_SERVER['REMOTE_ADDR'];
$ipaddr = $_SERVER['REMOTE_ADDR'];
$client_accesslogin = $_SESSION['client_accesslogin'];
session_register("client_id");
session_register("client_name");
session_register("client_email");
session_register("client_company");
list($clientid, $name,$first_name,$last_name, $pass, $email, $company) = mysql_fetch_row($result);
$client_id = $clientid;
$client_name = $name;
$fname=$first_name;
$lname=$last_name;
$client_email = $email;
$client_company = $company;
$cisloggedin = 'Yes';
session_register("cisloggedin");
session_register("fname");
session_register("lname");
header("Location: menu.php");
mysql_free_result ($result);
mysql_close($connection);
}
$connection = mysql_connect($hostname, $user, $pass) or die ("Unable to connect!");
$query = "SELECT * FROM admins WHERE name = '$name' AND password = '$password'";
$result = mysql_db_query($database, $query, $connection);
$date_in = date("Y-m-d");
$time_in = date("H:i:s");
$accesslogin = $name;
if (mysql_num_rows($result) == 1)
{
session_start();
session_register('time_in');
session_register('date_in');
session_register('accesslogin');
session_register('remoteaddr');
$_SESSION['time_in']=$time_in;
$_SESSION['date_in']=$date_in;
$remoteaddr = $_SERVER['REMOTE_ADDR'];
$ipaddr = $_SERVER['REMOTE_ADDR'];
$accesslogin = $_SESSION['accesslogin'];
session_register("client_id");
session_register("client_name");
session_register("client_email");
list($clientid, $name, $pass, $email) = mysql_fetch_row($result);
$client_id = $clientid;
$client_name = $name;
$client_name = "admin";
$client_email = $email;
$isloggedin = 'Yes';
session_register("isloggedin");
header("Location: menu.php");
mysql_free_result ($result);
mysql_close($connection);
}
else
{
mysql_free_result ($result);
mysql_close($connection);
header("Location: index.php");
exit;
}
?>
有效。但是,如果我删除包含的config.php并添加连接:
$database = "invoices";
$user = "root";
$pass = "";
$hostname = "localhost";
它没有登录。我不明白。 inc / config.php有一些带连接的代码,但为什么我不能在不使用include的情况下添加连接本身?
答案 0 :(得分:0)
创建一个连接数据库的功能,也可以关闭连接。
function connect(user, pass, location)
function disconnect()
然后你连接到你的第一个数据库,做你的操作。关闭它,然后打开与另一个数据库的新连接,并执行您的操作。
如果您当时想要维护2个连接,可以将实例保存到变量
并且做:
mysqli_select_db($instance1, 'SELECT ...');
mysqli_select_db($instance2, 'SELECT ...');
还要在查询中转义变量:)
答案 1 :(得分:0)
我正在假设有一个专门的登录处理页面?
在这种情况下,您只需创建一个新的config.php并仅在登录页面上连接到该数据库?
您的一些代码或结构会有所帮助。
答案 2 :(得分:0)
mysql_select_db()函数设置活动的MySQL数据库。
语法
bool mysql_select_db ( string database_name [, resource link_identifier])
mysql_select_db()尝试选择与指定链接标识符关联的服务器上的现有数据库。
成功时返回TRUE,失败时返回FALSE。
我们可以使用mysql_select_db函数在mysql服务器中选择数据库。 mysql_select_db()选择服务器上与指定链接标识符关联的当前活动数据库。如果未指定链接标识符,则假定最后打开的链接。如果没有打开链接,该函数将尝试设置一个链接,就好像没有参数调用mysql_connect()一样。