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 数据库;当我将代码上传到服务器时,我会注释掉本地主机代码。

不幸的是,发生了不可抗拒的事情,我上传了错误连接的代码,注释掉了;这导致 24 小时锁定客户!:(

有没有办法让代码判断它是否在 localhost 服务器上,如果不是,则查找 godaddy 连接?

4

6 回答 6

3

你可以试试这个来确定它是在 live 还是 localhost

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

我通常使用获取网站的 URL / 域的方法?这可以在某些情况和设置下工作。否则,如果您使用固定IP操作,也可以使用此方法

查看使用 $_SERVER 的方法

PHP $_SERVER

于 2012-07-21T05:45:06.780 回答
0

一种方法是让您检查您的外部 IP 地址并查看您的位置。解决方案应该通过查看$_SERVER全局变量内的属性来呈现。

于 2012-07-21T05:45:21.640 回答
0

我有一个很好的建议:你编写一个游戏,游戏是一个大程序,你不要在大程序中直接使用 mysql* 函数,因为你应该自己处理它们,比如错误处理。我建议你使用 DB-Handler。请谷歌:DB-Handler PHP

于 2012-07-21T05:53:49.060 回答
0

正如其他人所提到的,您可以使用该$_SERVER变量获取您的脚本正在运行的当前站点。但是,我想提供一个替代解决方案。

您可以在您的网站(本地和生产)中创建一个文件夹,例如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 回答