Transformer une ip dynamique en ip fixe en étant derrière un routeur

Contenu du snippet

j'ai fait ce code afin de pouvoir accèder, à partir de mon site internet, à ma base mysql hébergée chez moi.
pré-requis:
- avoir un serveur web sur sa machine locale (easyphp par exemple),
- avoir un site web avec un transfert ftp
installer ip.ph sur votre site web
installer recup.php sur votre serveur web local
lancer internet explorer en local recup.php
et laissez tourner indéfiniment

Source / Exemple :


// fichier ip.php
<?
echo $REMOTE_ADDR;
?>
//cela permet uniquement d'afficher l'adresse ip du routeur (ou du poste si conecté avec un modem direct)
//vous pouvez le lancer seul pour savoir votre addresse ip

//fichier recup.php
<HTML>
// on commence par l'entête html afin de lancer automatiquement un raffraichissement
<HEAD>
  <META HTTP-EQUIV="refresh" CONTENT="300" URL="recup.php">
//le 300 est en fait le nombre de seconde entre 2 tests d'adresse ip
</HEAD>
<BODY>

</BODY>
</HTML>
<? 
$adrip = "";
//récupération de l'adresse ip
$contenu = file("http://www.votresite.com/ip.php","r");
//traitement du fichier
foreach($contenu as $value){ 
} 
$adrip=$value; //j'aurai pu utiliser la variable $value le reste du temps 
include "fichier.txt"; //c'est un fichier situé dans le même dossier que recup.php sur votre serveur en local
// il permet de stocker l'adresse ip

echo $serveursql,'<br>'; //affichons pour voir

if ($adrip==$serveursql) { //comparaison avec ip enregistree
}
else {
	//adresse du serveur ftp de votre site
	$host = "ftp.votresite.com"; 
	
	//Repertoire de base de la connexion
	$rep = "/web/";
	
	//Fichier a uploader
	$file = "fichier.txt";
	
	// connection au serveur
	if (!$ftp = @ftp_connect($host))
	    {
	    echo "Connection impossible<br>";
	    }
	    else
	    {
	    echo "Connecté à $host<br>";
	
	    // login
	    if(@ftp_login($ftp,"nomuserftp", "motdepasseftp"))
	      {
                      //silogin ok
	      echo "Login ok<br>";
	
	      //Upload du fichier
	      	$fp = fopen("fichier.txt","w+");
		$charge = '<? $serveursql = "'.$adrip.'" ?>' ;
		fwrite($fp,$charge); 
		echo 'ecrit '.$charge;
		if (ftp_put($ftp, "$rep/$file" , "$file", FTP_ASCII))
	                   {
	                    //si on a bien uploadé
	                    echo "<br><br>fichier.txt uploadé";
	                    $test = 'uploadé';}
	       else // sinon on fait marche arrière
	       {
	      	$fp = fopen("fichier.txt","w+");
		$charge = '<? $serveursql = " " ?>' ;
		fwrite($fp,$charge); 
		echo 'ecrit '.$charge;
	       echo "<br><br>fichier" . $file . "non uploadé";
	       $test = 'nonuploadé';
	       } 
	      }
	    }
	//on s'envoi un petit mail pour se prévenir qu'on a changé d'adresse ip
                mail("moi@mosite.com",$test.$adrip,$adrip,"From: moi@monsite.com");
} //sinon on ne fait rien
?>

Conclusion :


bien sur pour envoyer un mail il faut que votre serveur en local soit bien configuré
n'oubliez pas si vous utilisez un modem routeur firewall comme moi (bewan 600 adsl) de rediriger les ports NAT:
- serveur web: protocole TCP port publique 80 sur l'adresse ip de votre serveur local port 80
- base MYSQL: protocole TCP port publique 3306 sur l'adresse ip de votre serveur local port 3306

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.