0

PHPでゲームをプログラミングしており、データベースに接続するための次のコードがあります

//$sqldb=mysql_connect('godaddy.hostedresource.com', 'godaddyUserName', 'godaddyPassword') OR die ('Unable to connect to database! Please try again later.');
$sqldb=mysql_connect('localhost', 'root', 'mypassword') OR die ('Unable to connect to database! Please try again later.');

ここでの秘訣は、実稼働サーバーを使用している場合は、godaddy データベースをコメントアウトすることです。コードをサーバーにアップロードするときは、代わりに localhost コードをコメントアウトします。

残念ながら、避けられない事態が発生したため、間違った接続をコメントアウトしてコードをアップロードしました。これにより、顧客は 24 時間ロックアウトされました。:(

localhost サーバー上にあるかどうかをコードで確認する方法はありますか?そうでない場合は、godaddy 接続を探しますか?

4

6 に答える 6

3

これを試して、ライブかローカルホストかを識別できます

if($_SERVER["SERVER_NAME"] == "localhost" 
    && 
   $_SERVER["SERVER_ADDR"] == "127.0.0.1"){
  // in localhost
  $hostname = "localhost";
  $username = "localuser";
  $password = "localpassword";
}else{
  // not in localhost
 $hostname = "livehost";
 $username = "liveuser";
 $password = "livepassword";
}

データベースに接続できなかったがエラーをファイルに保存できなかった場合は失敗します。

if(!mysql_connect($hostname,$username,$password)){
 file_put_contents("mysql_connect.error",mysql_error(),FILE_APPEND);
 die("Couldn't connect to database");
}

提案として、mysql_ *を使用しないようにし、PDOまたはmysqliに切り替えてください。

于 2012-07-21T05:55:14.303 に答える
1
if ($_SERVER['SERVER_NAME'] == 'the.name.of.your.devel.server') {
    $host = 'localhost';
} else {
    $host = 'name.of.godaddy.server';
}
$sqldb = mysql_connect($host, ....);
于 2012-07-21T05:45:49.447 に答える
0

私は良い提案があります:あなたはゲームをコーディングしています、ゲームは大きなプログラムです、あなたは大きなプログラムで直接mysql *関数を使用しないでください、なぜならあなた自身がエラー処理のようにそれらを処理するべきだからです。私はあなたがDB-Handlerを使うことを提案します。グーグルしてください:DB-Handler PHP

于 2012-07-21T05:53:49.060 に答える
0

他の人が言及しているように、$_SERVER変数を使用して、スクリプトが実行されている現在のサイトを取得できます。ただし、別の解決策を提供したいと思います。

Webサイト(ローカルと本番の両方)に次のようなフォルダーを作成し、そのconfig中に構成ファイルを保存することができます。たとえばconfig.php、次のようになります。

<?php
// Local
$db_host = 'localhost';
$db_username = 'root';
$db_password = 'mypassword';
?>

そして生産のために:

<?php
// Production
$db_host = 'godaddy.hostedresource.com';
$db_username = 'godaddyUserName';
$db_password = 'godaddyPassword';
?>

.htaccess次のようなディレクトリ内のファイルを使用して、ディレクトリへのアクセスを禁止します。

deny from all

次に、PHPコードで、次の手順を実行します。

<?php
require_once($_SERVER["DOCUMENT_ROOT"] . "/config/config.php");
$sqldb=mysql_connect($db_host, $db_username, $db_password) OR die ('Unable to connect to database! Please try again later.');
?>

ここで、さまざまな構成ファイルをそのままにして、他のすべてをアップロードするだけで、コードが実行されるたびにさまざまな構成ファイルにアクセスできるようになります。

また、.htaccessファイルは誰もがHTTP経由でファイルにアクセスできないようにする必要があり、ファイルの内容をPHPタグに含めると、.php拡張子を使用して、ファイルにアクセスできた場合に誰もが内容を見ることができないようにする必要があります(PHPはレンダリングされる前にファイルし、何も出力しません)。

于 2012-07-21T05:58:00.120 に答える
0

私は通常、サイトの URL / ドメインを取得する方法を使用しますか? これは、特定の状況や設定で機能します。それ以外の場合は、固定 IP で操作している場合は、この方法も使用できます

$_SERVER を使用してメソッドを調べてください

PHP $_SERVER

于 2012-07-21T05:45:06.780 に答える
0

1 つの方法は、外部 IP アドレスを確認して、現在地を確認することです。$_SERVERソリューションは、グローバル変数内のプロパティを確認することで提示する必要があります。

于 2012-07-21T05:45:21.640 に答える