我正在使用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连接吗?
答案 0 :(得分: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 ..
答案 1 :(得分:1)
if ($_SERVER['SERVER_NAME'] == 'the.name.of.your.devel.server') {
$host = 'localhost';
} else {
$host = 'name.of.godaddy.server';
}
$sqldb = mysql_connect($host, ....);
答案 2 :(得分:0)
答案 3 :(得分:0)
一种方法是检查外部IP地址并查看您的位置。解决方案应该通过查看$_SERVER
全局变量中的属性来呈现。
答案 4 :(得分:0)
我有一个很好的建议:你编写一个游戏,游戏是一个大程序,你不要直接在大程序中使用mysql *函数,因为你自己应该处理它们,比如错误处理。我建议你使用DB -Handler。请谷歌:DB-Handler PHP
答案 5 :(得分: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将在呈现之前解析该文件,并且不会输出任何内容)。