Salut, je veux récupérer des champs d'un fichier texte (fichier log) mais le problème c'est que les données dans mon fichier ne sont pas homogènes donc je doit sélectionner les informations.
Voilà une partie du fichier texte et mon code :
23/12/05 10:31:34 Login request from user AFRICA SERVICES EXPRESS at NAS 172.16.26.2 port 260 permitted
23/12/05 10:31:35 Radius accounting start record for user AFRICA SERVICES EXPRESS at NAS 172.16.26.2 port 1, Acct-Session-Id(44)=16973856, Acct-Delay-Time(41)=0, Acct-Authentic(45)=RADIUS, User-Service(6)=Framed-User, Vendor-Specific(26)=000001AD000098420000000E, Vendor-Specific(26)=000001AD00009843000005EC, Vendor-Specific(26)=000001AD0000901900000002, Vendor-Specific(26)=000001AD0000901A00000010, Vendor-Specific(26)=000001AD0000901B00000004, Vendor-Specific(26)=000001AD0000901D00000007, Caller-Id(31)=, Client-Port-DNIS(30)=, Vendor-Specific(26)=000001AD0000006C00000014, Vendor-Specific(26)=000001AD0000009900000004, Vendor-Specific(26)=000001AD000000C700000002, Vendor-Specific(26)=000001AD0000902300000017, Framed-Protocol(7)=PPP, Framed-Address(8)=172.16.26.61, Vendor-Specific(26)=000001AD0000982F00000000, attribute(51)=1, attribute(50)=842229301
23/12/05 10:31:35 Login request from user TRANSIT EL YAGOUBI at NAS 172.16.26.1 port 20017 permitted
23/12/05 10:31:48 Login request from user LARENA TRANSIT at NAS 172.16.26.2 port 2052 permitted
23/12/05 10:31:49 Radius accounting start record for user LARENA TRANSIT at NAS 172.16.26.2 port 1, Acct-Session-Id(44)=134414503, Acct-Delay-Time(41)=0, Acct-Authentic(45)=RADIUS, User-Service(6)=Framed-User, Vendor-Specific(26)=000001AD0000984200000012, Vendor-Specific(26)=000001AD0000984300000CEC, Vendor-Specific(26)=000001AD0000901900000009, Vendor-Specific(26)=000001AD0000901A00000010, Vendor-Specific(26)=000001AD0000901B00000004, Vendor-Specific(26)=000001AD0000901D00000006, Caller-Id(31)=, Client-Port-DNIS(30)=, Vendor-Specific(26)=000001AD0000006C00000014, Vendor-Specific(26)=000001AD0000009900000004, Vendor-Specific(26)=000001AD000000C700000002, Vendor-Specific(26)=000001AD0000902300000015, Framed-Protocol(7)=PPP, Framed-Address(8)=172.16.26.72, Vendor-Specific(26)=000001AD0000982F00000000, attribute(51)=1, attribute(50)=842229302
23/12/05 10:31:52 Login request from user SOFITRANS at NAS 172.16.26.2 port 258 permitted
<?php
if( isset($_POST['upload']) ) // si formulaire soumis
{
$content_dir = 'upload/'; // dossier où sera déplacé le fichier
$tmp_file = $_FILES['fichier']['tmp_name'];
if( !is_uploaded_file($tmp_file) )
{
exit("Le fichier est introuvable");
}
// on vérifie maintenant l'extension
/* $type_file = $_FILES['fichier']['type'];
if( !strstr($type_file, '.') == ".txt" )
{
exit("Le fichier n'est pas un document text ");
} */
if (!$fp = fopen("$tmp_file","r")) {
echo "Echec de l'ouverture du fichier";
exit;
}
@mysql_connect('localhost','root','');
echo 'connexion serveur OK<br />';
mysql_query('DROP DATABASE IF EXISTS `bd_douane`');
mysql_query('CREATE DATABASE `bd_douane`');
echo 'creation de la BD OK<br />';
mysql_query('DROP TABLE IF EXISTS `table_log`');
mysql_db_query('bd_douane','CREATE TABLE `table_log` (
Date char(255),
Time char(255),
Type char(255),
User char(255),
Etat char(255),
NAS char(255),
Port char(255),
Permission char(255),
Acct_Session_Id char(255),
Acct_Delay_Time char(255),
Acct_Authentic char(255),
User_Service char(255),
Vendor_Specific1 char(255),
Vendor_Specific2 char(255),
Vendor_Specific3 char(255),
Vendor_Specific4 char(255),
Vendor_Specific5 char(255),
Vendor_Specific6 char(255),
Caller_Id char(255),
Client_Port_DNIS char(255),
Vendor_Specific7 char(255),
Vendor_Specific8 char(255),
Vendor_Specific9 char(255),
Vendor_Specific10 char(255),
Framed_Protocol char(255),
Framed_Address char(255),
Vendor_Specific11 char(255),
Vendor_Specific12 char(255),
attribute1 char(255),
attribute2 char(255),
Acct_Session_Time char(255),
attribute3 char(255),
Acct_Input_Octets char(255),
Acct_Output_Octets char(255),
Acct_Input_Packets char(255),
Acct_Output_Packets char(255))');
while (!feof($fp)) /* on importe */
{ /* Tant qu'on n'atteint pas la fin du fichier */
$ligne = fgets($fp,4096); /* On lit une ligne */
$espace = preg_replace('/\s\s+/', ' ', $ligne);
/* On récupère les champs séparés par ; dans liste */
$liste = explode( " ",$espace);
/* On assigne les variables */
$Date_f = $liste[1];
$Time_f = $liste[2];
$Type_f = $liste[3];
$User_f = $liste[4];
$Etat_f = $liste[5];
$NAS_f = $liste[6];
$Port_f = $liste[7];
$Permission_f = $liste[8];
$Acct_Session_Id_f = $liste[9];
$Acct_Delay_Time_f = $liste[10];
$Acct_Authentic_f = $liste[11];
$User_Service_f = $liste[12];
$Vendor_Specific_f1 = $liste[13];
$Vendor_Specific_f2 = $liste[14];
$Vendor_Specific_f3 = $liste[15];
$Vendor_Specific_f4 = $liste[16];
$Vendor_Specific_f5 = $liste[17];
$Vendor_Specific_f6 = $liste[18];
$Caller_Id_f = $liste[19];
$Client_Port_DNIS_f = $liste[20];
$Vendor_Specific_f7 = $liste[21];
$Vendor_Specific_f8 = $liste[22];
$Vendor_Specific_f9 = $liste[23];
$Vendor_Specific_f10 = $liste[24];
$Framed_Protocol_f = $liste[25];
$Framed_Address_f = $liste[26];
$Vendor_Specific_f11 = $liste[27];
$Vendor_Specific_f12 = $liste[28];
$attribute1_f = $liste[29];
$attribute2_f = $liste[30];
$Acct_Session_Time_f = $liste[31];
$attribute3_f = $liste[32];
$Acct_Input_Octets_f = $liste[33];
$Acct_Output_Octets_f = $liste[34];
$Acct_Input_Packets_f = $liste[35];
$Acct_Output_Packets_f = $liste[36];
/* Ajouter un nouvel enregistrement dans la table */
$query = "INSERT INTO table_log VALUES('$Date_f ','$Time_f','$Type_f','$User_f','$Etat_f','$NAS_f','$Port_f','$Permission_f','$Acct_Session_Id_f','$Acct_Delay_Time_f','$Acct_Authentic_f','$User_Service_f','$Vendor_Specific_f1','$Vendor_Specific_f2','$Vendor_Specific_f3','$Vendor_Specific_f4','$Vendor_Specific_f5','$Vendor_Specific_f6','$Caller_Id_f','$Client_Port_DNIS_f','$Vendor_Specific_f7','$Vendor_Specific_f8','$Vendor_Specific_f9','$Vendor_Specific_f10','$Framed_Protocol_f','$Framed_Address_f','$Vendor_Specific_f11','$Vendor_Specific_f12','$attribute1_f','$attribute2_f','$Acct_Session_Time_f','$attribute3_f','$Acct_Input_Octets_f','$Acct_Output_Octets_f','$Acct_Input_Packets_f','$Acct_Output_Packets_f')";
MYSQL_QUERY($query);
if(mysql_error())
{ /* Erreur dans la base de donnees, sûrement la table qu'il faut créer */
print "Erreur dans la base de données : ".mysql_error();
print "<br>Importation stoppée.";
exit();
}
ini_set("max_execution_time", 120);
}
fclose($fp);
MYSQL_CLOSE();
}
?>
merci beaucoup!!