首页 > 解决方案 > php sqlsrv 通过多台服务器连接到一个特定的数据库

问题描述

所以我有 3 台服务器(192.168.0.21、192.168.0.22 和 192.168.0.23),我希望它们连接到一个名为 Pensions 的数据库,它们都使用 sql server(UID 和 PWD)身份验证。是否可以使用 php 和 sqlsrv_connect() 来实现这一点?这是connect.php:

                <?php
            #first start session
                session_start();
            // session time out after no activity for 4 minutes
              if ($_SESSION['TimeOut'] + (5 * 60) < time()) {
                 // session timed out
                 header("Location: ./sessdestroy.php");
                 exit;
              } else {
              // store new request time.
                 $_SESSION["TimeOut"] = time();
              }

            function getConnection(){ 
                $db = 0;
                if(!$_SESSION['Database']){
                    $db = 0;
                }else{   
                 $db = $_SESSION['Database'];
                } 
            $databaseName  = 'Pension';
            if ($db == 0) 
            { // Country A
                $serverName ='192.168.0.21';
                $UID ='sa';
                $PWD ='pass!';
                $databaseName = 'Pension';
            }
            else if($db ==1)
            { // Country B
                $serverName ='192.168.0.22';
                $UID ='sa';
                $PWD ='pass!';
                $databaseName = 'Pension';

            }
            else
            { //Country C
                $serverName ='192.168.0.23';
                $UID ='sa';
                $PWD ='pass!';
                $databaseName = 'Pension';

            }
            //connection string
            //echo "test here...";

            //echo " S: ".$serverName." u: ".$UID." P: ".$PWD;
                $serverName = "serverName";
                $connectionInfo = array( "Database"=>"$databaseName", "UID"=>"$UID", "PWD"=>"$PWD");
                $conn = sqlsrv_connect($serverName,$connectionInfo);

                //exit();
            //phpinfo();
                if (!$conn)
                {
                    exit("Connection Failed: " . $conn); 
                    //try local server 
                    if ($db == 1) {
                      $serverName ='192.168.0.20';
                      $UID ='fund_user';
                      $PWD ='fund_user';
                      $databaseName = 'Pension';
                      $conn = sqlsrv_connect($serverName,$connectionInfo);
                      if (!$conn) return 0;
                      $stmt = sqlsrv_query($databaseName,$conn);
                      return $conn;
                    }
                    return 0;
                }
                else
                {
                  $stmt = sqlsrv_query($databaseName,$conn);
                  return $conn;
                }
            }
            ?>

然后这是 process.php(当建立连接时,它会根据用户角色将用户引导到主页)

                <?php
            //give no error
            ini_set("display warning",0);
            #include connection
            include('Connections/fundmaster.php');
            if(!isset($_SESSION)) 
                { 
                    session_start(); 
                } 
            //temp store for the database session before destory

            $db = 0;
            $db = $_SESSION["Database"];
            if ($db==""){
             $db = 0;
            }
             if (!isset($_SESSION["Database"]))
               {
                $_SESSION["Database"] = 0;
               }
             $_SESSION["Database"] = $db;

            if($_POST['subLogin'])
                {
                $nationalID = $_POST['sname'];
                $PWD = $_POST['Memberno'];

                $conn = getConnection();
                $sql = "select * from netlogin where NationalID = '";
                $sql .= $nationalID ."' and vcPassword= '" .$PWD."'";
                $sql = stripslashes($sql);
                $stmt = sqlsrv_query($sql, $conn);
                if($row = sqlsrv_fetch_array($stmt)){
                    $SchemeNo = $row[0];
                    $MemberNo = $row[1];
                    $userRole = $row[6];
                    session_start();
                    if (!isset($_SESSION["SchemeNo"]))
                    {
                            $_SESSION["SchemeNo"] = $SchemeNo;
                    }
                    if (!isset($_SESSION["MemberNo"]))
                    {
                        $_SESSION["MemberNo"] = $MemberNo;
                    }
                    if (!isset($_SESSION["userRole"]))
                    {
                        $_SESSION["userRole"] = $userRole;
                    }
                    $_SESSION["SchemeNo"] = $SchemeNo;
                    $_SESSION["MemberNo"] = $MemberNo;
                    $_SESSION["userRole"] = $userRole;
                    $_SESSION["Database"] = $db; 
                     if($userRole == "1"){
                    header("Location:admin/adminarea.php");
                         }else{
                        header("Location:membersarea.php");
                          }
                }else{
                 header("Location: login.php");
                }
            }else{
                header("Location: login.php");  
            }

            ?>

标签: phpdatabasesqlsrv

解决方案


推荐阅读