James Clifton
James Clifton

Reputation: 175

Connecting to database via php code

I am programming a game in PHP and have the following code to connect to a database

//$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.');

The trick here is that if I am on the production server I comment out the godaddy database; when I upload the code to the server I then comment out the localhost code instead.

Unfortunately the ineveitable has happened and I uploaded the code with the wrong connection commented out; this led to 24 hours of locked out customers! :(

Is there a way to have the code to tell if it is on the localhost server, and if it isn't it then looks for the godaddy connection?

Upvotes: 0

Views: 483

Answers (6)

Alex
Alex

Reputation: 567

As has been mentioned by other people, you can obtain the current site your script is running on using the $_SERVER variable. However, I would like to provide an alternative solution.

You could make a folder in your website (both local and production), something like config, then store a configuration file in it, for example config.php, with the following:

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

And for production:

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

and disallow access to the directory with a .htaccess file in the directory, something like:

deny from all

Then, in your PHP code, do the following:

<?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.');
?>

Now, simply leave the different configuration files where they're at and upload everything else, so your code will access different configuration files whenever it runs.

Also, the .htaccess file should prevent anyone from accessing the file via HTTP, and having the file contents in PHP tags, as well as a .php extension should prevent anyone from seeing any contents if they were able to access the file (PHP would parse the file before it is rendered, and would output nothing).

Upvotes: 0

Gntem
Gntem

Reputation: 7155

you can try this to identify if its on live or 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";
}

and fail if couldn't connect to database but save the error into a file.

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

a suggestion, try not to use mysql_* anymore, switch to PDO or mysqli ..

Upvotes: 3

user1541439
user1541439

Reputation:

I have a good suggestion : You coding a game , game is a big program, you don't use mysql* function directly in big program , because yourself should handling them, such as error handling.i suggest you use a DB-Handler. please google for : DB-Handler PHP

Upvotes: 0

Marc B
Marc B

Reputation: 360882

if ($_SERVER['SERVER_NAME'] == 'the.name.of.your.devel.server') {
    $host = 'localhost';
} else {
    $host = 'name.of.godaddy.server';
}
$sqldb = mysql_connect($host, ....);

Upvotes: 1

Milad Naseri
Milad Naseri

Reputation: 4118

One way would be for you to check your external IP address and see where you are. A solution should present itself by looking at the properties inside the $_SERVER global variable.

Upvotes: 0

Angry 84
Angry 84

Reputation: 2995

i normally use a method of obtaining the URL / domain of the site? This can work in certain situations and setups. Otherwise if your operating with a fixed IP than you can also use this method

Have a look over the methods using $_SERVER

PHP $_SERVER

Upvotes: 0

Related Questions