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.)