Cette fonction PHP simplissime retourne sous la forme d’une chaine l’environnement/serveur sur lequel on se situe (ex: local, réseaux interne, internet, internet de préprod…).
Ceci permet par exemple de de changer automatiquement les
connexions à la base de données en fonction de la dev, la préprod ou la prod ou encore d’activer/désactiver automatiquement le mode débug en fonction de l’environnement de développement ou de prod.
public static function whereImI(){ $maps = array ( 'LOCAL'=>array('localhost','127.0.0.1','0.0.0.1','::0.0.0.0'), 'LAN'=>array('192.168.10.','idleman-pc'), 'PWAN'=>array('preprod.sys1.fr'), 'WAN'=>array('www.idleman.fr','idleman.fr'), ); $return = 'UNKNOWN'; foreach($maps as $map=>$values){ foreach($values as $ip){ $pos = strpos(strtolower($_SERVER['HTTP_HOST']),$ip); if ($pos!==false){ $return = $map; } } } return $return; }
Exemple d’utilisation:
$whereImI = whereImI(); switch($whereImI){ case 'LOCAL': case 'LAN': define('DB_HOST','localhost'); //nom du host define('DB_LOGIN','monLoginLocal');//Login d'acces au mysql define('DB_MDP','monMdpLocal');//mdp d'acces au mysql define('DB_PORT','');//mdp d'acces au mysql define('DB_BDD','maBaseLocale');//nom de la base de donnée break; case 'WAN': define('DB_HOST','localhost'); //nom du host define('DB_LOGIN','monLogindDeProd');//Login d'acces au mysql define('DB_MDP','monMdpDeProd');//mdp d'acces au mysql define('DB_PORT','');//mdp d'acces au mysql define('DB_BDD','maBaseDeProd');//nom de la base de donnée break;
Dans cet exemple, l’appel de la fonction whereImI() me retournera :
- ‘LOCAL‘ si j’accède a mon serveur depuis mon serveur lui même (en tapant 127.0.0.1 ou localhost)
- ‘LAN‘ si j’accède a mon serveur depuis mon réseau de la maison (en tapant une adresse qui commence par 192.168.0)
- ‘PWAN‘ si j’accède a mon serveur depuis l’url preprod.idleman.fr
- WAN si j’accède a mon serveur depuis l’url idleman.fr ou www.idleman.fr
Si je puis me permettre, la fonction devrait s’appeler whereAmI(), non 😉 ?
Excellente idée ceci dit !
(au fait, j’ai pas mal avancé dans la jQuery-pluginisation de ton script de barre de progression ! Pour l’instant ça bugge quand j’en lance deux sur la même page, et il y a encore quelques glitches.)