2016-09-01 6 views
-1

このコードからIF条件を削除するにはどうすればよいですか?
DB接続ファイルからIF文を削除する方法は?

このコードは、データベースの資格情報がELSEステートメント内にある場合にのみ機能します。 IF文の接続で正しいデータベースの資格がある場合は動作しません。何が起こっている ?サーバマシンから直接接続するサイトの管理者は、のために(他のユーザーとは異なるデシベル(セレクタ)にアクセスすることができますMySQLユーザーを使用できるように:)私の意見では

<?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

localhostに接続していますか? '$ _SERVER ['REMOTE_ADDR']'の値は何ですか?基本的なデバッグ。 –

+1

ここで実際に何を達成しようとしていますか?これは、データベースの資格情報(dev **サーバー**、ライブ用)の2つの異なるセットであると思われますか?**クライアント**がローカルに接続すると、別のMySQLユーザーを使用するはずですか? – CD001

+1

@PaavoDoe「この質問は研究努力を示していません。それは不明または有用ではない。質問に答えてください。 –

答えて

0

あなたは$ _SERVER [ 'REMOTE_ADDR']内の値:: 1を取得する必要があるためです。

に変更すると動作するはずです
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

また、127.0の代わりに:: 1を取得する理由については、http://stackoverflow.com/questions/10517371/ip-address-of-the-machine-in-php-gives-1-but-whyをご確認ください。 0.1ドルで$ _SERVER ['REMOTE_ADDR'] –

-1

を、そのコードが作成されました管理目的の例)。

したがって、 "selector"という名前のdbがあるかどうかを確認してください。 yesの場合は、password2でUser1を作成します。いや、単に除くすべて削除した場合:

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

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

環境によっては、ブロックが異なる資格情報を使用する可能性があります。 –

+0

@JonStirlingはい、それは私が言ったことです。あなたは異なるdbにアクセスでき、最終的には異なる特権でアクセスできます。 –

+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

どうしてですか?なぜ現在のものが動作しないときにこれは動作しますか? –

関連する問題