php sqlsrv подключение нескольких серверов к одной конкретной базе данных - PullRequest
0 голосов
/ 18 сентября 2018

Итак, у меня есть 3 сервера (192.168.0.21, 192.168.0.22 и 192.168.0.23), и я хотел бы, чтобы они подключались к базе данных, называемой пенсиями, все они используют аутентификацию сервера SQL (UID и PWD). Можно ли добиться этого с помощью php и sqlsrv_connect ()? Это the 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");  
            }

            ?>
...