2016-09-01 51 views
-1

如何從此代碼中刪除IF條件?
如何從數據庫連接文件中刪除IF語句?

由於某些奇怪的原因,此代碼僅在正確的數據庫憑證位於ELSE語句內時纔有效。如果我在IF語句連接中有正確的數據庫憑據,將無法正常工作。到底是怎麼回事 ? :)

<?php 

/* database connection */ 

if ($_SERVER['REMOTE_ADDR'] == '127.0.0.1') { 
define('DBUSER', 'User1'); 
define('DBPASS', 'password2'); 
define('DBHOST', 'localhost'); 
define('DBNAME', 'selector'); 
} else { 
define('DBUSER', 'User2'); 
define('DBPASS', 'password1'); 
define('DBHOST', 'localhost'); 
define('DBNAME', 'Database'); 
} 
define('DB', 'mysql:host=' . DBHOST . ';dbname=' . DBNAME); 
+0

你連接到本地主機? '$ _SERVER ['REMOTE_ADDR']'的值是多少?基本調試。 –

+1

你究竟想在這裏實現什麼?這是否應該是2套不同的數據庫證書(一個用於開發**服務器**,一個用於實況),或者當**客戶端**本地連接時,是否真的應該使用不同的MySQL用戶? – CD001

+1

@PaavoDoe從懸停在'這個問題沒有顯示任何研究工作;它不清楚或沒有用處。「請回答問題。 –

回答

0

這是因爲你必須獲得價值:: 1內$ _ SERVER [ 'REMOTE_ADDR']。 它應該工作,如果你改變爲

if ($_SERVER['REMOTE_ADDR'] == '::1') { 
define('DBUSER', 'User1'); 
define('DBPASS', 'password2'); 
define('DBHOST', 'localhost'); 
define('DBNAME', 'selector'); 
} else { 
define('DBUSER', 'User2'); 
define('DBPASS', 'password1'); 
define('DBHOST', 'localhost'); 
define('DBNAME', 'Database'); 
} 
+0

也請檢查這個http://stackoverflow.com/questions/10517371/ip-address-of-the-machine-in-php-gives-1-but-why爲什麼你可能得到:: 1而不是127.0。 $ _SERVER中的0.1 ['REMOTE_ADDR'] –

-1

在我看來,該代碼創建使網站管理員,直接從服務器設備連接,可以使用能夠訪問到不同的DB(選擇)比其他用戶的MySQL用戶(用於管理目的的示例)。

因此,檢查你是否有一個名爲「選擇器」的數據庫;如果是,則使用password2創建User1。如果沒有,直接刪除所有除:

define('DBUSER', 'User2'); 
define('DBPASS', 'password1'); 
define('DBHOST', 'localhost'); 
define('DBNAME', 'Database'); 

define('DB', 'mysql:host=' . DBHOST . ';dbname=' . DBNAME); 
+0

更有可能該塊在那裏根據環境使用不同的憑據。 –

+0

@JonStirling是的,這就是我所說的。您可以訪問不同的數據庫,最終擁有不同的權限。 –

+0

我不確定你是否理解我說的。這當然不是你的答案所說的。 –

0

您應該使用$_SERVER['HTTP_HOST']

如下編寫代碼: -

$host = ['localhost', '127.0.0.1']; 
if(in_array($_SERVER['HTTP_HOST'], $host)){ 
    $pdo = new PDO('mysql:host=localhost;dbname=your_db', 'username', 'password'); 
} 
else{ 
    $pdo = new PDO('mysql:host=example.com;dbname=your_db', 'username', 'password'); 
} 

如果你想使用常量,然後寫

if(in_array($_SERVER['HTTP_HOST'], ['localhost', '127.0.0.1'])){ 
    define('DBUSER', 'User1'); 
    define('DBPASS', 'password1'); 
    define('DBHOST', 'localhost'); 
    define('DBNAME', 'your_db1'); 
} 
else{ 
    define('DBUSER', 'User2'); 
    define('DBPASS', 'password2'); 
    define('DBHOST', 'example.com'); 
    define('DBNAME', 'your_db2'); 
} 

然後寫下你的連接對象如下

$pdo = new PDO('mysql:host='.DBHOST.'; dbname='.DBNAME, DBUSER, DBPASS); 
+0

他們爲什麼要這樣?爲什麼當他們現在的那個不工作時這會工作? –