begin process at 2010 03 21 19:25:52
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Astuces

 > INTERDIRE UN PAYS DANS VOTRE SITE

INTERDIRE UN PAYS DANS VOTRE SITE


 Information sur la source

Note :
7,29 / 10 - par 7 personnes
7,29 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Astuces Niveau :Débutant Date de création :29/08/2003 Date de mise à jour :29/08/2003 14:00:00 Vu :6 491

Auteur : McPeter

Ecrire un message privé
Site perso
Commentaire sur cette source (32)
Ajouter un commentaire et/ou une note

 Description

Astuce : Interdire l'accès d'un pays à votre site

Utilitée : Imaginer que pour des raisons privées ou professionelle, vous ne souhaitez pas qu'un pays ai accès à votre site.
Compatibilitée : tout navigateur

/!\ important : la base de données des pays est mis à jour sur ce site : http://ip-to-country.directi.com/
Aller dans la section download et télécharger la dernière version des IP pour les pays.
Sur ce site, la version téléchargeable est en *.CVS
Nous incluons ici le code qui vous permettra de recréer le fichier pour votre base de données.

Vous pouvez toutefois télécharger une version *.sql, prête à l'emploi
=> http://downloads.blinckers-groups.com/kill_country .zip

Source

  • // Le fichier pour enregistrer le fichier *.CVS dans votre base :
  • // Code:
  • <?
  • /************************************************
  • * Origine du script Sunny *
  • * http://www.phpcs.com/article.aspx?Val=671 *
  • ************************************************/
  • //***************************************************
  • // Lecture et insertion du fichier ipcountry
  • //**********************************************
  • function LireFichier()
  • {
  • //------------------------------------
  • // Configuration d'accès à votre base
  • //------------------------------------
  • $host = "localhost"; // Hote de la base de données
  • $base = "mydatabase"; // Nom de la base de données
  • $logg = "root"; // User
  • $pwd = "123456"; // Password
  • $table_country = "kill_country";
  • //------------------------------------
  • $sqllink=mysql_connect ($host,$logg,$pwd);
  • mysql_select_db($table_country,$sqllink);
  • $filename="ipcountry.txt"; // mettez le nom de votre fichier
  • // ouverture du fichier
  • $fd = fopen( $filename, "r");
  • // Tant qu'on est pas à la fin
  • while (!feof($fd))
  • {
  • // on lit le fichier
  • $buffer = fgets($fd,1000);
  • // on découpe la chaine lue dans un tableau
  • $name=explode(",",$buffer);
  • // on enlève les " (on peut faire un boucle for pour éviter les 5lignes)
  • $name[0]=str_replace("\"","",$name[0]);
  • $name[1]=str_replace("\"","",$name[1]);
  • $name[2]=str_replace("\"","",$name[2]);
  • $name[3]=str_replace("\"","",$name[3]);
  • $name[4]=str_replace("\"","",$name[4]);
  • // on insère les valeurs dans la base
  • mysql_query ("INSERT INTO kill_country (IP_FROM,IP_TO,CODE,CODE2,PAYS) values ('".$name[0]."','".$name[1]."','".$name[2]."','".$name[3]."','".$name[4]."')",$sqllink) ;
  • }
  • fclose ($fd);
  • mysql_close($sqllink);
  • }
  • ?>
  • // Le fichier pour interdire l'accès à votre site (kill_country.php) :
  • // Code:
  • <?
  • /*************************************************
  • * BLINCKERS© Groups
  • *************************************************
  • * Kill Country
  • * Version : 1.0 | 29/08/2002
  • * By McPeter
  • * http://www.blinckers-groups.com
  • *************************************************/
  • /************************************************
  • * Collecte des informations *
  • ************************************************/
  • // Ici indiquer le pays à interdire
  • if (trim(IpEnPays()) == "FRANCE")
  • {
  • // Ca c'est pour la blague .. mais il suffit de mettre "die;" à la fin de la condition
  • header("Location:http://www.wanadoo.fr");
  • }
  • /************************************************
  • * Renvoit le pays en fonction de l'IP *
  • * 05/07/2003 *
  • * Origine du script Sunny *
  • * http://www.phpcs.com/article.aspx?Val=671 *
  • * Modified by McPeter *
  • ************************************************/
  • function IpEnPays()
  • {
  • // Récupère l'IP du visiteur...passe les proxys
  • $ip_address = (getenv("HTTP_X_FORWARDED_FOR") ? getenv("HTTP_X_FORWARDED_FOR") : getenv("REMOTE_ADDR"));
  • // transforme l'ip en nombre
  • $ip_address = preg_split( "/[.]+/", $ip_address);
  • $ip = (double) ($ip_address[0]*16777216)+($ip_address[1]*65536)+($ip_address[2]*256)+($ip_address[3]);
  • //------------------------------------
  • // Configuration d'accès à votre base
  • //------------------------------------
  • $host = "localhost"; // Hote de la base de données
  • $base = "mydatabase"; // Nom de la base de données
  • $logg = "root"; // User
  • $pwd = "123456"; // Password
  • $table_country = "kill_country";
  • //------------------------------------
  • $db=mysql_connect ($host,$logg,$pwd);
  • mysql_select_db($base,$db);
  • //------------------------------------
  • $result = mysql_db_query($base,"SELECT * FROM ".$table_country." WHERE ".$ip." BETWEEN IP_FROM AND IP_TO ", $db);
  • if ($rowPays=mysql_fetch_row($result))
  • $retour=$rowPays[4];
  • else
  • $retour="Indeterminé";
  • //------------------------------------
  • mysql_free_result($result);
  • return $retour;
  • }
  • ?>
  • // Maintenant, il vous suffit d'insérer ce fichier dans toutes les pages que vous
  • // voulez interdire.
  • Code:
  • <? include("kill_country.php"); ?>
// Le fichier pour enregistrer le fichier *.CVS dans votre base : 
// Code: 

<? 
/************************************************ 
 * Origine du script Sunny                      * 
 * http://www.phpcs.com/article.aspx?Val=671    * 
 ************************************************/ 

//*************************************************** 
//  Lecture et insertion du fichier ipcountry 
//********************************************** 
function LireFichier() 
{ 
   //------------------------------------ 
   // Configuration d'accès à votre base 
   //------------------------------------ 
   $host = "localhost";      // Hote de la base de données 
   $base = "mydatabase";      // Nom de la base de données 
   $logg = "root";           // User 
   $pwd = "123456";            // Password 

   $table_country = "kill_country"; 
   //------------------------------------ 

    
   $sqllink=mysql_connect ($host,$logg,$pwd); 
   mysql_select_db($table_country,$sqllink); 
       
   $filename="ipcountry.txt"; // mettez le nom de votre fichier 
   // ouverture du fichier 
   $fd = fopen( $filename, "r"); 
   // Tant qu'on est pas à la fin 
   while (!feof($fd)) 
   { 
      // on lit le fichier 
      $buffer = fgets($fd,1000); 
      // on découpe la chaine lue dans un tableau 
      $name=explode(",",$buffer); 
      // on enlève les " (on peut faire un boucle  for pour éviter les 5lignes) 
      $name[0]=str_replace("\"","",$name[0]); 
      $name[1]=str_replace("\"","",$name[1]); 
      $name[2]=str_replace("\"","",$name[2]); 
      $name[3]=str_replace("\"","",$name[3]); 
      $name[4]=str_replace("\"","",$name[4]); 
      // on insère les valeurs dans la base 
      mysql_query ("INSERT INTO kill_country (IP_FROM,IP_TO,CODE,CODE2,PAYS) values ('".$name[0]."','".$name[1]."','".$name[2]."','".$name[3]."','".$name[4]."')",$sqllink) ; 
   } 
   fclose ($fd); 
   mysql_close($sqllink); 
} 
?> 

// Le fichier pour interdire l'accès à votre site (kill_country.php) : 
// Code: 

<? 
/************************************************* 
 *               BLINCKERS© Groups                
 ************************************************* 
 *          Kill Country 
 *          Version : 1.0 | 29/08/2002 
 *          By McPeter 
 *          http://www.blinckers-groups.com 
 *************************************************/ 

/************************************************ 
 *          Collecte des informations           * 
 ************************************************/ 

// Ici indiquer le pays à interdire 
if (trim(IpEnPays()) == "FRANCE") 
{ 
   // Ca c'est pour la blague .. mais il suffit de mettre "die;" à la fin de la condition 
   header("Location:http://www.wanadoo.fr"); 
} 

/************************************************ 
 *     Renvoit le pays en fonction de l'IP      * 
 * 05/07/2003                                   * 
 * Origine du script Sunny                      * 
 * http://www.phpcs.com/article.aspx?Val=671    * 
 * Modified by McPeter                          * 
 ************************************************/ 
function IpEnPays() 
{ 
   // Récupère l'IP du visiteur...passe les proxys 
   $ip_address = (getenv("HTTP_X_FORWARDED_FOR") ? getenv("HTTP_X_FORWARDED_FOR") : getenv("REMOTE_ADDR")); 
   // transforme l'ip en nombre 
   $ip_address = preg_split( "/[.]+/", $ip_address); 
   $ip = (double) ($ip_address[0]*16777216)+($ip_address[1]*65536)+($ip_address[2]*256)+($ip_address[3]); 
   //------------------------------------ 
   // Configuration d'accès à votre base 
   //------------------------------------ 
   $host = "localhost";      // Hote de la base de données 
   $base = "mydatabase";      // Nom de la base de données 
   $logg = "root";           // User 
   $pwd = "123456";            // Password 

   $table_country = "kill_country"; 
   //------------------------------------ 
   $db=mysql_connect ($host,$logg,$pwd); 
   mysql_select_db($base,$db); 
   //------------------------------------ 
   $result = mysql_db_query($base,"SELECT * FROM ".$table_country." WHERE ".$ip." BETWEEN IP_FROM AND IP_TO ", $db); 
   if ($rowPays=mysql_fetch_row($result)) 
      $retour=$rowPays[4]; 
   else 
      $retour="Indeterminé"; 
   //------------------------------------ 
   mysql_free_result($result); 
   return  $retour; 
} 
?> 
 


// Maintenant, il vous suffit d'insérer ce fichier dans toutes les pages que vous
// voulez interdire. 

Code: 

<? include("kill_country.php"); ?> 

 Conclusion

Comme vous pouvez le voir je ne suis aps l'auteur de 95% de la source .. .donc ceux qui voudraient me tomber dessus pour dire : "..bouuuu vilain copier coller .." ben taisez-vous ...
Les "autteurs" (ou posteurs) des bouts de sources, sont mentionnés dans le script...

voilà
@++


 Sources du même auteur

CACHER LES VARIABLES CONTENNUES DANS UNE URL
LISTER LE CONTENU D'UN DOSSIER ET AFFICHER LES FICHIERS VOUL...
RÉCUPÉRER TOUTES LES VALEURS D'UN SELECT MULTIPLE DANS UNE V...
GÉNÉRATEUR COULEUR HEXADÉCIMAL EN LIGNE
Source avec Zip Source avec une capture MYMINI PHP ADMIN POUR MINIDB SANS MYSQL

 Sources de la même categorie

Source avec une capture PAGINATION EN PHP par Orangina
Source avec Zip POO - DEBUGGER par DiGhan
Source avec Zip CRAWLER DE SITE EN PHP par Mcjo
DÉCOUPAGE D'UN TEXTE EN FONCTION DES SAUTS DE LIGNES par biloubil
RÉCUPÉRER LE CHEMIN RELATIF D'UN OBJET PAR RAPPORT À LA RACI... par FredPsy

Commentaires et avis

Commentaire de jeca le 29/08/2003 18:25:43

les lignes d'importation pourraient avantageusement être remplacée par cette requète :

  $sql = "LOAD DATA INFILE '$filename' " .
            "INTO TABLE kill_country " .
            "FIELDS TERMINATED BY ',' " .
            "LINES TERMINATED BY '
'";

Testé sur serveur PIII 500
fichier : ip-to-country.csv

temps d'éxécution :
    la fonction du code : 47 à 48 secondes
    la requète : 0.5 à 0.6 seconde

Commentaire de T0x1K le 29/08/2003 18:41:43

quelles raisons privées ou profesionnelles?

Commentaire de deephoat le 29/08/2003 20:10:42

wé c un peut nimpotnawak ton truc ; personellement je voi pas linteret dinterdir a kelkun daller sur ton site ; fin je c pas internet c un moyen de liberté et de comunication .. pour tous enfin pour ceux ki en sont ekipés ; enfin je crois donc vouala je comprend pas trop linteret mais bon ...

Commentaire de jotrash le 29/08/2003 20:23:21

bah ya plein de gens qui sont contre les ricains alors ...

Commentaire de deephoat le 29/08/2003 20:26:46

wé nan meme pour sa sa vaut pa le coup moi je dit ..  ;)

Commentaire de McPeter le 29/08/2003 22:53:42

Oui encore un commentaire débile
alors avant de dire que mon code c'est n'importe quoi grandit un peut ..
même pas une source sur CS n'y un message dans les forums et ça vient balancer un commentaire bidon !

pour T0x1K :
Privée .. eu ...ben apr exemple, tu as des images et tu veux pas que les ricains ( pour reprendre jotrash) y aient accès
Professionnelle : eu .. ben tu vends par exemple certains produit et tu veux aps que tel ou tel pays voient ta technique de vente en ligne ..

Par contre jeca ça c'est un commentaire constructif .. je vais voir ce que ça donne... merci ;)

Commentaire de deephoat le 29/08/2003 22:58:53

je dis pas ke c la technike c juste lethike ....
c ce ke je pense ; apré bah voila koi !
Bon je diré plus rien paske a parament sa va matirer les foudre de gens ke je ne conné meme pa ... mdr

Commentaire de jotrash le 30/08/2003 08:46:23

lol deephoat ce quon veut dire cest quand ce moment a chaque fois quon poste une source on na un commentaire pour dire que c nul et que ca sert a rien
alors que chaque source a son interet peut etre pas pour soi mais pour un autre si

Commentaire de thepopolinux le 30/08/2003 11:34:35

pourkoi pas ... :)

Commentaire de deephoat le 30/08/2003 12:55:35

g jamé dit ke c té nul personelement joré ete completement incapable de la faire 7 source enfin bref bonne continuation a toi McPeter

Commentaire de odyseus le 02/09/2003 09:16:11

Un exemple flagrant c'est lorsqu'on developpe un intranet de societe situe en France ,et qu'on ne veux pas qu'un hacker etranger esai de rentrer sur le site, meme si un bon hacker contournerais la chose..
bon dev

FRANCIS

Commentaire de giminik le 02/09/2003 23:59:54

bon les cocos, les proxis ça existe
ensuite dans certains pays y'a des lois qui empêchent de montrer certaines choses donc voici donc l'utilité.

Commentaire de ferber le 07/09/2003 22:59:43

un autre exemple d'utilisation pourrait être une redirection automatique de l'utilisateur vers la version du site traduit dans la langue correspondant a son ip.

sa peut ausi servir, l'orsque que le non/pub d'un produit diffère d'un pay a l'autre,

Cordialement
nicolas Maucci

Commentaire de McPeter le 08/09/2003 04:51:47

Effectivement ferber .. :)
thx

Commentaire de spidee le 02/10/2003 18:56:35

Bon sa me serviras certainement pas mais je le prend quand mm mici
Mc pouteur ^^ ( ct nul je c ...)

Commentaire de BlackKr0nik le 09/12/2003 16:09:20

perso....sa m'servira pa....mais bon ton exemple sur les rikains ma plu :pp, et bon ya dé bonnes choses :) allez 8 :pAvant de valider votre commentaire merci de le relire (2 fois s'il le faut) afin d'éviter un maximum de fautes d'orthographe et de français. Merci également de veiller à ne pas trop écorcher la langue de molière en écrivant en abrégé (comme sur des SMS).
=&gt; ***** j'croi k'G po respecté lé règle C grav ?? :pp
bonne dev

Commentaire de 8neo8 le 11/12/2003 23:37:46

Pas mal.Voir même enfin un code intéréssent...

Commentaire de PusHead le 26/06/2004 08:12:09

Pour récupérer l'ip du visiteur il y a plus efficace mais plus aussi


&lt;?
function get_ip() {
  if($_SERVER) {
    if($_SERVER['HTTP_X_FORWARDED_FOR'])
      $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
    elseif($_SERVER['HTTP_CLIENT_IP'])
      $ip = $_SERVER['HTTP_CLIENT_IP'];
    else
      $ip = $_SERVER['REMOTE_ADDR'];
  }
  else {
    if(getenv('HTTP_X_FORWARDED_FOR'))
      $ip = getenv('HTTP_X_FORWARDED_FOR');
    elseif(getenv('HTTP_CLIENT_IP'))
      $ip = getenv('HTTP_CLIENT_IP');
    else
      $ip = getenv('REMOTE_ADDR');
  }

  return $ip;
}
?&gt;


Pour éviter les pare-feux et proxy

Commentaire de PaTaTe le 16/06/2005 20:18:11

PusHead ta fonction ne tourne pas sous PHP5 :(

Commentaire de vangeurmasker le 30/08/2005 23:21:15

    function get_ip() {
      if(isset($_SERVER)) {
        if(isset($_SERVER['HTTP_X_FORWARDED_FOR']))
          $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
        elseif(isset($_SERVER['HTTP_CLIENT_IP']))
          $ip = $_SERVER['HTTP_CLIENT_IP'];
        else
          $ip = $_SERVER['REMOTE_ADDR'];
      }
      else {
        if(getenv('HTTP_X_FORWARDED_FOR'))
          $ip = getenv('HTTP_X_FORWARDED_FOR');
        elseif(getenv('HTTP_CLIENT_IP'))
          $ip = getenv('HTTP_CLIENT_IP');
        else
          $ip = getenv('REMOTE_ADDR');
      }

      return $ip;
    }
Tien pour la mise a jour.

Commentaire de winsion le 24/09/2006 16:33:16

Merci, merci, merci !!!!
Le nombre de brésiliens qui viennent sur mon site pour le pirater !!!
Maintenant, tchao les brésiliens... (de toute façon mon site est uniquement destiné à la france)

Commentaire de GFONK le 12/06/2007 05:30:41

à l'attention de McPeter  j'aimerais bien télécharger la version toute prête pour SQl or il se trouve qu'elle n'est plus téléchargeable apparement

Merci de combler cette lacune

Commentaire de McPeter le 13/06/2007 04:31:02

je vais refaire ce fichier
avec les dernières mises à jour

Commentaire de McPeter le 13/06/2007 19:54:00

Voilà ... mis à jour ..pour la base sql
c'est toujours le lien mentionné plus haut
@++

Commentaire de angeoublie le 21/09/2007 16:45:36

Bonjour,
Chez moi j'ai un probleme, ça me donne ça après avoir fait les fichiers et entrer la bdd mysql:

Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in /home/*****/vhosts/******.net/********/kill_country.php on line 50

Warning: mysql_free_result(): supplied argument is not a valid MySQL result resource in /home/*****/vhosts/******.net/*******/kill_country.php on line 55

Et voici ce que j'ai aux lignes indiquées:

48 //------------------------------------
49 $result = mysql_db_query($base,"SELECT * FROM ".$table_country." WHERE ".$ip." BETWEEN IP_FROM AND IP_TO ", $db);
50 if ($rowPays=mysql_fetch_row($result))
51 $retour=$rowPays[4];
52 else
53 $retour="Indeterminé";
54 //------------------------------------
55 mysql_free_result($result);
56 return $retour;
57 }

Quelqu'un peut m'aider ? merci !

Commentaire de givit le 10/10/2007 15:34:18 10/10

Bonjour et merci pour ce script.

Je tenais à remercier Mc Peter pour ce script, car cela fait 2 jours que je cherchais un moyen pour interdire l'accè à une partie de mon site à la communauté mondiale étant donnée qu'il s'adresse tout particulièrement aux Français. Le fichier htaccess ne fonctionne pas chez moi pour ce genre de demande... alors ce script tombe à point.

J'ai quand même quelques petits problèmes.

Le premier viens qu'en laissant la " France " comme banni, j'ai une phrase qui apparait et la page est toujours visible. La voici :


Warning: Cannot modify header information - headers already sent by (output started at /home/.pusshead/site/mon_site/kill_country.php:47)


Pour le second, dois-je mettre le code en tête de page, entre les balises head, entre les balises Body ou en fin de page ?

Merci d'avance pour votre aide...

Note pour  deephoat : Il me semble que cette partie du site est pour celles et ceux qui ont des problème avec le script. Tes remarque à propos de l'utilité de celui-ci me semble hors de propos et je ne crois pas être le seul à trouver se script des plus interéssant.


Le troisième concerne l'ajout de Pays. Je n'arrive pas à savoir comment on peut rajouter des pays bannis ? Doit-on mettre obligatoirement le nom du pays en entier et sous la même forme que dans la base ou pouvons-nous mettre également le code 2 ou le code 3 à sa place ?

Commentaire de givit le 05/01/2009 23:59:37

REMARQUE TRES IMPORTANTE : Après plus d'un an d'utilisation, j'ai remarqué qu'en autorisant que la France à l'accès aux pages, les personnes étant chez le neuf ou cegetel étaient directement bannis comme si elles ne faisaient pas partie de la France.

Voilà...

Commentaire de McPeter le 07/01/2009 11:59:35

faut peu être que je fasse une nouvelle mise à jour de la DB :p (mais vous pouvez le faire vous aussi :) )

Commentaire de givit le 07/01/2009 12:34:04

Salut McPeter,

Qu'est-ce que tu veux dire par là ?

Commentaire de McPeter le 19/01/2009 01:46:44

les plages d'adresses ip de neuf et cegetel ne sont peu être pas dans la base de données actuelle. il faut donc régulièrement mettre à jour la base de données des correspondances ip<->pays.

J'indique la procédure dans la première partie du code.
c.f.:
// Le fichier pour enregistrer le fichier *.CVS dans votre base :

Commentaire de RenardB le 21/10/2009 14:28:32 5/10

Bonjours a tous

très bonne idée j'ai besoin de le faire fonctionner pour éviter que certains pays servant de support au attaque arrive sur mon serveur.
j'ai pas réussis a mettre en place le .csv du site officiel , le bout de programme donné plus haut ne semble pas fonctionné chez moi ?
je me suis donc tourné vers l'url du sql fournis mais qui manque d'une mise a jours ( date de 2007 ) si quelqu'un avais la bonté de nous fournir un sql a jours ?

j'ai creer un fichier php de test avec l'appel <? include("kill_country.php"); ?>
et dans le fichier kill_country.php j'ai copier coller et mis mes donné d'accée a ma base de donnée.

cela fonctionne bien pour l'interdiction d'un pays mais comment je doit faire pour interdire plusieurs pays ? j'ai une liste de 10 pays banni de mon serveur

merci de votre aide

David

Commentaire de RenardB le 06/11/2009 14:37:28

bonjour je tente de laisser l'accée qu'a deux pays pour un site j'ai donc fait ceci dans kill-country

mais cela ne semble pas fonctionner ? quelqu'un peut t'il m'aider ?

// Ici indiquer les pays à autoriser
if (trim(IpEnPays()) != "FRANCE" OR trim(IpEnPays()) != "BELGIUM")
{
// Ca c'est pour la blague .. mais il suffit de mettre "die;" à la fin de la condition
header("Location:http://www.wanadoo.fr");
}

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix


HTC Magic

Entre 429€ et 429€

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,702 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales