Snippet #8 ~ PHP Executer du code uniquement en local,en lan ou en wan

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

 

 

Une réaction au sujet de « Snippet #8 ~ PHP Executer du code uniquement en local,en lan ou en wan »

  1. AkaiKen Réponse

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

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.