Accueil > Lecture adresse IP et Pays avec fichier base de données en fichiers TEXT

version v1

22/01/2007

 Eanim - Mtasc -PHP      Signer le livre d'Or    Merci

Lecture adresse IP ,Pays , sans base de données SQL, mais avec fichiers codes des pays dans fichiers TXT. La reconnaissance du pays est plus lente qu'avec la base SQL.
Exemple fichier TXT:
100663296 ; 121195295 ; US ; USA ; UNITED STATES ; CRLF;
121195296 ; 121195327 ; IT ; ITA ; ITALY ; CRLF;

Vous trouverez des infos , prog ,sur la façon de décoder le pays etc.:
http://cyberzoide.developpez.com/php4/ip-to-country/
Prière de ne pas me contacter pour ce prog , le site ci-dessus est fait pour cela.

Accès aux Téléchargements  (Partie 1=base de données , Partie 2=fichiers=

fichier batch (pour compilation avec Mtasc )
ip_demo.bat:
E:\mtasc\mtasc -swf ip_demo.swf -main fichier_demo.as
pause

fichier phi
Voir dans le fichier  ip_demo.phi,

fichier PHP sans base de données : your_ip_demo.php:
explications sur ce fichier PHP:
1- lecture adresse IP
diverses valeurs IP sont écrites après des "//" pour essais
2-conversion IP en valeur numérique dans " $total "
cette valeur est ensuite testée entre une valeur mini et une valeur maxi pour extraire le Pays: Exemple:
100663296;121195295;US;USA;UNITED STATES;CRLF;
121195296;121195327;IT;ITA;ITALY;CRLF;

le "CRLF" pour indiquer au prog php , la fin de ligne
la 1ere valeur : 100663296 , valeur mini du pays
la 2eme valeur : 121195295, valeur maxi du pays
la 3/4 valeur : US; USA; code du pays
la 5eme valeur : UNITED STATES; nom du pays
le prog compare si le total numérique de l'IP est compris entre le mini et le maxi , si oui , il extrait le nom du pays , si non , il va a la ligne suivante voir le While.
3-une boucle FOR , pour lire les fichiers TXT avec les codes:
$fil1="ip_to_country"; début du nom du fichier
exemple de fichier : "ip_to_country1.txt"
le fichier original comporte 72000 lignes de codes !!
d'ou la nécessité de le découper en plusieurs fichiers txt.
4-ouverture du fichier compteur ,pour voir si l'adresse IP lue est déjà dans le fichier txt:
$filename = "compteur_demo.txt";
si l'adresse IP n'existe pas écrire dans le fichier par:
if($poster=="non")
si l'adresse existe , pas d'écriture
5-lecture du fichier visiteurs pour extraire les infos nécessaire à l'affichage dans eanim via mtasc.

 








 

fichier fichier_demo.as:
import MovieClip;
import flash.TextField;
class fichier{
static var intervalId:Number;
static var donnees_xml = new XML();
static var flag:Number;
static var flag1:Number;
static var my_fmt:TextFormat;
static var cpte:Number;
static var cpte2:Number;
static var mc:MovieClip;
static var ip:String;
static var my_str:String ; //
variable tempo pour récupération chaine string
static var my_str1:String ;
//variable tempo pour récupération chaine string
static var cp1:Number;
// compte les caracteres de l'IP
static var cp2:Number; /
/ compte les caracteres du Pays
static var deb:Number;
static var fin:Number;
static var deb_fr:Number;
// debut variable nombre de france
static var fin_fr:Number; //
fin variable nombre de france
static var deb_au:Number;
// debut variable nombre autre
static var fin_au:Number;
// fin variable nombre autre
//================================================
function fichier() {
if (flag != 11){
// init variables
_root.message1_text="1";
// pour passage 1 fois au load
flag=11;cpte =0;cpte2 =0; flag1=0;
// init des vars
_root.ip_text="-";
// lecture IP
_root.message2_text="";
// sauvegarde IP
_root.partie1_text="-";

};
// fin if init

intervalId = setInterval(this, "tempo", 1500); // tempo

}; /
/ fin fonction var_xml
//------------------------------Timer --------------------------------------

function tempo(){
_root.flag1_text=String(flag1);
if (flag1 != 3) {
// fin de la réception et du découpage flag==3
// ===== Affichage compteur pour visu sur Eanim
_root.cpt1_text=String(cpte);
_root.cpt2_text=String(cpte2);
_root.flag1_text=String(flag1);
// ====== Compteurs avant test pour sureté lecture IP ==============
if (_root.message2_text == "") {
// si rien recu
cpte = cpte +1; if (cpte >=99){ cpte = 0;}
} // fin if
if (_root.message2_text != "") {
// si recu quelque chose
cpte2 = cpte2 +1; if (cpte2 >=99){ cpte2 = 0;}
}
// fin if
// ====== Test sur lecture pour sureté lecture IP ==================

if ((_root.message2_text != "")&&(cpte >=3 )){ /
/ si recu quelque chose
_root.ip_text= _root.message2_text;
flag1 = 1;
}
// fin if
if ((_root.message2_text != "")&&(cpte2 >=10 )) {
// si recu quelque chose
_root.ip_text= _root.message2_text;
flag1 = 1;
} /
/ fin if
// ====================================================

if(flag1 == 1) {
// fin de la réception
my_str =_root.ip_text;
//recup fichier avec les datas
my_str1 =my_str.substr(0,2);
if (my_str1 == "IP") { /
/ IP est le début de la variable a recevoir
flag1=2;
// chaine trouvé OK , prête pour découpage
} /
/ fin if str1==IP
else {
_root.ip_text="-";
// lecture IP
_root.message2_text="";
// sauvegarde IP
_root.partie1_text="-";
cpte =0;cpte2 =0; flag1=0;
// init des vars pour recommencer
}
// fin du else
}
// fin if flag1==1
// =====================================================
// ===== Demande lecture IP via une page php sans l'afficher =============

if ((flag1 == 0)&&(_root.message2_text == "")) { // demande lect tant que flag est a 0
with(_root.ip_text) {
loadVariables("your_ip_demo.php","","GET");
_root.message2_text=ip;
} /
/ fin du with
}
// end if
//=========================================================
// ==== découpage de la réception

if (flag1 == 2) {
// fin de la réception ok
my_str =_root.ip_text;
/
/------------------------------------------
for (var i = 0; i<my_str.length; i++) {
cp1=i;
if ((my_str.charAt(i) == "F")&&(my_str.charAt(i+1) == "r")&&(my_str.charAt(i+2) == "=")) {
fin =cp1;
// pour afficher le pays dans partie2_text
deb_fr=(cp1+3);
// début variable nombre connecté france
}
// fin if char
} /
/ fin boucle for
/
/------------------------------------------
for (var i = 0; i<my_str.length; i++) {
cp1=i;
if ((my_str.charAt(i) == "A")&&(my_str.charAt(i+1) == "u")&&(my_str.charAt(i+2) == "t")) {
deb_au=cp1+4; /
/ ex 3 début variable nombre connecté autre
fin_au=(my_str.length-deb_au);
fin_fr=(cp1-1)-(deb_fr);
_root.partie3_text=my_str.substr(deb_fr,fin_fr);
// saisie
_root.partie4_text=my_str.substr(deb_au,fin_fr); /
/ saisie
}/
/ fin if char
}
// fin boucle for
//----------------------------------------------------
for (var i = 0; i<my_str.length; i++) {
cp1=i;
if ((my_str.charAt(i) == "y")&&(my_str.charAt(i+1) == "s")) {
deb = cp1+3;
// debut du nom de pays
fin = fin - deb;
// fin nom du pays
_root.partie2_text=my_str.substr(deb,fin);
// saisie
}
// fin if char
}
// fin boucle for
//------------------------------------------
for (var i = 0; i<my_str.length; i++) {
cp1=i;
if ((my_str.charAt(i) == "P")&&(my_str.charAt(i+1) == "a")&&(flag1 == 2)) {
_root.partie1_text=my_str.substr(3,cp1-4);
// saisie 3 1er caractère
flag1 = 3;
}
// fin if char
}
// fin boucle for
flag1 = 3;
} /
/ fin if flag1==2
}
// fin du prog si flag=3
//=============================================
};
// fin tempo
//-------------------------------------
static function main() { var t = new fichier();}
}
// fin de la class