Php connessione al database valida sia in locale che su server remoto
19/10/2011Qualsiasi progetto prima di andare in linea per la fase di testing viene lavorato in locale su server interno per affinare tutte le necessarie fasi di sviluppo.
Ci son due strade, impostare anche in locale un accesso al db con lo stesso user e password, oppure, al momento della messa online, cambiare le impostazioni di accesso adeguandole a quelle del server di pubblicazione.
Nella prima ipotesi, significa che ogni volta dovremo creare un account diverso o cambiare le impostazioni di quello locale standard, nella seconda che, ad ogni modifica o intervento di programmazione, dovremo ricordarci di modificare le impostazioni di connessione prima di ricaricare le modifiche effettuate.
Allora perché non prevedere direttamente nel file di connessione un piccolo controllo che effettua la connessione al db dopo aver verificato l'host su cui si sta operando?
Ecco un codice di esempio, in cui naturalmente andranno modificati i valori dei parametri di accesso.
Lo script verifica se il nome host è quello del dominio (con o senza prefisso www) e in quel caso fa la connessione attraverso i parametri del server, o, se non riscontra il nome host, effettua la connessione in locale.
if (($_SERVER['HTTP_HOST'] == 'www.miosito.it') || ($_SERVER['HTTP_HOST'] == 'miosito.it'))
{
$nome_server = "localhost";
$nome_db = "nome_db_su_host";
$nome_utente = "nome_utente_db_su_host";
$db_password = "password_utente_db_su_host";
$connessione=mysql_connect($nome_server,$nome_utente,$db_password) or die ("Non riesco a connettermi con il Server $nome_server<br />");
$database = mysql_select_db($nome_db, $connessione) or die ("Non riesco a selezionare il db $nome_db<br />");
}
else
{
$nome_server = "localhost";
$nome_db = "nome_db_locale";
$nome_utente = "nome_utente_db_locale";
$db_password = "password_utente_db_locale";
$connessione=mysql_connect($nome_server,$nome_utente,$db_password) or die ("Non riesco a connettermi con il Server $nome_server<br />");
$database = mysql_select_db($nome_db, $connessione) or die ("Non riesco a selezionare il db $nome_db<br />");
}