第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

如何從另一個(gè)文件 php 驗(yàn)證 mysql 數(shù)據(jù)庫連接

如何從另一個(gè)文件 php 驗(yàn)證 mysql 數(shù)據(jù)庫連接

PHP
紫衣仙女 2022-09-17 22:35:10
我創(chuàng)建了一個(gè)表單,用戶可以在其中添加他的數(shù)據(jù)庫名稱,用戶名,密碼,主機(jī)。然后該表單創(chuàng)建一個(gè)配置文件并添加用戶數(shù)據(jù)庫詳細(xì)信息。表單位于根目錄中,配置文件位于根/包含中。我想知道如何從表單文件驗(yàn)證數(shù)據(jù)庫連接。如果連接成功,他可以繼續(xù)下一步,如果不是,我想顯示錯(cuò)誤。形式if ($_SERVER['REQUEST_METHOD'] == 'POST' && $_POST['db-details']) {    $dbName = $_POST['dbName'];    $dbUsername = $_POST['dbUsername'];    $dbPassword = $_POST['dbPassword'];    $dbHost = $_POST['dbHost'];    $phConfigFile = 'includes/ph_config.php';    file_put_contents($phConfigFile, $phConfigData);}配置<?php     define("DB_HOST", "[dbHost]");    define("DB_USER", "[dbUsername]");    define("DB_PASS", "[dbPassword]");    define("DB_NAME", "[dbName]");    $connection = mysqli_connect(DB_HOST, DB_USER, DB_PASS, DB_NAME);
查看完整描述

3 回答

?
蠱毒傳說

TA貢獻(xiàn)1895條經(jīng)驗(yàn) 獲得超3個(gè)贊

您確實(shí)想在創(chuàng)建配置文件之前檢查連接,因此一旦創(chuàng)建,您就知道它將起作用


if ($_SERVER['REQUEST_METHOD'] == 'POST' && $_POST['db-details']) {


    $dbName     = $_POST['dbName'];

    $dbUsername = $_POST['dbUsername'];

    $dbPassword = $_POST['dbPassword'];

    $dbHost     = $_POST['dbHost'];


    // use error supression so you get to process the error rather 

    // than PHP throwing an error

    $connection = @mysqli_connect($_POST['dbHost'], 

                                $_POST['dbUsername'], 

                                $_POST['dbPassword'], 

                                $_POST['dbName']);


    if ( ! $connection ) {

        // do whatever you need to when the information passed does not work

        exit;

    }


    // must be valid as we connected


    $str = '<?php' . PHP_EOL;

    $str .= 'define("DB_HOST", "' . $_POST['dbHost'] . '");'        . PHP_EOL;

    $str .= 'define("DB_USER", "' . $_POST['dbUsername'] . '");'    . PHP_EOL;

    $str .= 'define("DB_PASS", "' . $_POST['dbPassword'] . '");'    . PHP_EOL;

    $str .= 'define("DB_NAME", "' . $_POST['dbName'] . '");'        . PHP_EOL; 


    $str .= '$connection = mysqli_connect(DB_HOST, DB_USER, DB_PASS, DB_NAME);' . PHP_EOL;


    // create the config file in all confidence that the values will work

    file_put_contents($phConfigFile, $str);    

}


查看完整回答
反對(duì) 回復(fù) 2022-09-17
?
小怪獸愛吃肉

TA貢獻(xiàn)1852條經(jīng)驗(yàn) 獲得超1個(gè)贊

這與里格斯弗利的答案相同,但有所改進(jìn)。


if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['db-details'])) {

    try {

        mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

        $connection = new mysqli(

            $_POST['dbHost'],

            $_POST['dbUsername'],

            $_POST['dbPassword'],

            $_POST['dbName']

        );


        $DBconfig = [

            'dbHost' => $_POST['dbHost'],

            'dbUsername' => $_POST['dbUsername'],

            'dbPassword' => $_POST['dbPassword'],

            'dbName' => $_POST['dbName']

        ];


        // generate the config file

        $contents = '<?php' . PHP_EOL;

        $contents .= '$DBconfig = ' . var_export($DBconfig, true) . ';' . PHP_EOL;

        $contents .= 'mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);' . PHP_EOL;

        $contents .= '$connection = new mysqli(

            $DBconfig["dbHost"],

            $DBconfig["dbUsername"],

            $DBconfig["dbPassword"],

            $DBconfig["dbName"]

        );';

        echo $contents;

    } catch (\Exception $e) {

        // echo error message here and show the same form. 

    }

}

基本上,您應(yīng)該不惜一切代價(jià)避免錯(cuò)誤抑制運(yùn)算符。值得慶幸的是,PHP有異常,可以捕獲和處理。


如果沒有異常,則可以將連接詳細(xì)信息放在數(shù)組中,然后將該數(shù)組導(dǎo)出為字符串。生成連接文件并保存。


我要改進(jìn)的另一件事是將其封裝在函數(shù)中,以防止配置細(xì)節(jié)溢出。


// generate the config file

$contents = '<?php' . PHP_EOL;

$contents .= 'function db_connect():\mysqli { '. PHP_EOL;

$contents .= '$DBconfig = ' . var_export($DBconfig, true) . ';' . PHP_EOL;

$contents .= 'mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);' . PHP_EOL;

$contents .= 'return new mysqli(

    $DBconfig["dbHost"],

    $DBconfig["dbUsername"],

    $DBconfig["dbPassword"],

    $DBconfig["dbName"]

);';

$contents .= PHP_EOL;

$contents .= '}'.PHP_EOL;

$contents .= '$connection = db_connect();'.PHP_EOL;

echo $contents;


查看完整回答
反對(duì) 回復(fù) 2022-09-17
?
鴻蒙傳說

TA貢獻(xiàn)1865條經(jīng)驗(yàn) 獲得超7個(gè)贊

因此,如果我答對(duì)了,您想知道用戶輸入的數(shù)據(jù)是否實(shí)際上有效以連接到服務(wù)器。未驗(yàn)證它。


您可以包含剛剛編寫的文件并對(duì)其進(jìn)行測(cè)試。


只需確保在包含后使用相同的變量名稱即可。


if ($_SERVER['REQUEST_METHOD'] == 'POST' && $_POST['db-details']) {


 $dbName = $_POST['dbName'];

 $dbUsername = $_POST['dbUsername'];

 $dbPassword = $_POST['dbPassword'];

 $dbHost = $_POST['dbHost'];


 $phConfigFile = 'includes/ph_config.php';


 file_put_contents($phConfigFile, $phConfigData);


 include($phConfigFile);


 if ($connection->connect_errno) {

  //data for the connection isn't valid

  echo "Failed to connect to MySQL: " . $connection->connect_error;

  exit();

 }


}


查看完整回答
反對(duì) 回復(fù) 2022-09-17
  • 3 回答
  • 0 關(guān)注
  • 124 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)