2013-02-08 36 views
0

我正在处理的代码有点混乱,因为我没有制作这个代码。但我想要做的是从不同的数据库获取登录信息。我不能只修改数据库连接的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

难道你不只是编辑登录页面上的代码来做到这一点? – 2013-02-08 12:32:52

+0

@ EM-Creations我认为这很简单。只需编辑login.php。但是,一旦我删除包含的inc/config.php,它不会登录。 – user1967153 2013-02-08 12:36:20

+0

为什么你需要删除对config.php的引用?为什么你不能打开与配置文件中启动的连接的另一个连接到MySQL数据库? – 2013-02-08 12:38:22

回答

0

做了一个连接到你的数据库的功能,也关闭了你的连接。

function connect(user, pass, location) 

function disconnect() 

然后你连接到你的第一个数据库,做你的操作。关闭它,然后打开一个新的连接到另一个数据库,并做你的操作。

如果你想保持当时的2个连接,则可以将实例保存到变量

做:

mysqli_select_db($instance1, 'SELECT ...'); 
mysqli_select_db($instance2, 'SELECT ...'); 

也逃不出你的变量在查询:)

0

我假设有一个专门的登录处理页面吗?

在这种情况下,您只需创建一个新的config.php并仅在登录页面连接到该数据库?

你的代码或结构有点帮助。

+0

是的,有一个登录页面,我不能这样做。原因是由于某种原因,如果我删除了原始的config.php,我无法登录。顺便说一句,我在我的帖子中添加了我的代码。 – user1967153 2013-02-08 12:38:05

+0

您的其他数据库是否具有来自发票数据库的所有用户信息?如果不是这可能是原因。 – trigun0x2 2013-02-08 12:41:07

+0

是的。因为在其他数据库(EMS)中是员工所在的位置,并且我只想在登录过程中检索该数据库。 – user1967153 2013-02-08 12:46:45

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()时没有参数一样。

相关问题