IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

EDI, CMS, Outils, Scripts et API PHP Discussion :

[Configuration] recherche de texte dans un fichier


Sujet :

EDI, CMS, Outils, Scripts et API PHP

  1. #1
    Membre à l'essai
    Inscrit en
    Octobre 2005
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 32
    Points : 14
    Points
    14
    Par défaut [Configuration] recherche de texte dans un fichier
    Bonjour,

    J'ai une application qui contient le numéro ainsi que le mot de passe dans un fichier de configuration, je voudrais pouvoir modifier ces paramètres depuis un interface web...

    Pour faire ceci il faut que je détecte si le fichier contient bien le numéro avec le mot de passe correspondant....

    J'ai essayer de détecter ceci avec le code suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    <?
     $numero = $HTTP_POST_VARS['numero'];
     $pin = $HTTP_POST_VARS['pin'];
     
     $ouvre=fopen("/etc/asterisk/voicemail.conf","r");        
     while(!feof($ouvre))                               
       {
        $lecture=fgets($ouvre,4096);                    
        $donnee=explode("\n",$lecture);                  
        $combien=count($donnee)-1;                       
     
        for($i=0;$i<=$combien;$i++)
          {
           if(ereg("\n".$numero." => ".$pin.",",$donnee[$i]));
             {
              //rediriger sur la page pour modifier le PIN
              fclose($ouvre);                                    
              header("location: testok.php");
             }
           else
             {
              //rediriger sur la page indiquant que le numéro ou l'ancien pin n'est pas correct
              fclose($ouvre);                                    //fermeture 
              header("location: testno.php");
             }
          }
       }
     
    ?>
    Pour l'instant je veux juste détecter la ligne contenant ces informations mais ça ne fonctionne pas et je ne comnprend pas pourquoi?????

    Le fichier contenant ces infos est ainsi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
     
    [general]
     
    format=wav
     
    serveremail=Asterisk
     
    attach=yes
     
    maxmessage=120
     
    minmessage=2
     
    skipms=3000
     
    maxsilence=10
     
    maxlogins=3
     
    fromstring=Comedian VoiceMail 
     
    saycid=no
     
    sendvoicemail=yes
     
    emailsubject=Nouveau message (${VM_MSGNUM}) de durée ${VM_DUR} dans la boîte vocale ${VM_MAILBOX} de la part de ${VM_CALLERID}
     
    emailbody=Cher(e) ${VM_NAME},\n\n\tvous avez reçu un nouveau message de durée ${VM_DUR} (numéro ${VM_MSGNUM})\ndans la boîte vocale du numéro ${VM_MAILBOX} de la part de ${VM_CALLERID}.\n\nPensez donc à consulter vos messages!\n\n\n\t\t\t\t\t\t\t\t\t--Comedian VoiceMail\n
     
     
    ;*********************************************************************
    ; Profils des utilisateurs
    ;*********************************************************************
     
    [sip]
    numero => pin,prenom nom,adresse@email.com
     
    301 => 2345,prenom nom,adresse@email.com
    Est ce que quelqu'un sait ou se situe mon erreur, ou connaissez vous une manière de réaliser ceci...

    Merci d'avance pour votre aide

  2. #2
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Pourquoi ca ne fonctionne pas ? Quel est le message d'erreur ?

  3. #3
    Membre à l'essai
    Inscrit en
    Octobre 2005
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 32
    Points : 14
    Points
    14
    Par défaut
    Au faite il va toujours sur testno.php
    testno.php et testok.php affiche simplement ok ou no à l'écran, et dans tous les cas il va sur testno.php, donc je présume qu'il ne détecte pas le numéro et le code pin et en plus il faut quasiment 2 minutes pour que la page testno.php s'affiche??

    Je ne comprend pas de quoi ça pourrait venir????

    J'ai ensuite essayer de tester si avec la commande ereg j'arrivais à detecter simplement le numéro 301 avec le code suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
    <?
     $numero = $HTTP_POST_VARS['numero'];
     $pin = $HTTP_POST_VARS['pin'];
     $new_pin = $HTTP_POST_VARS['newpin'];
     
     //test du mot de passe correspondant au numéro
     //ouverture et affichage du fichier voicemail.conf
     $ouvre=fopen("/etc/asterisk/voicemail.conf","r");        //ouverture du fichier en mode lecture
     while(!feof($ouvre))                               //tant qu'on est pas à la fon du fichier
       {
        $lecture=fgets($ouvre,4096);                    //stockage dans $lecture
        $donnee=explode("\n",$lecture);                 //parsing des données basé sur "\n"
        $combien=count($donnee)-1;                      //nombre d'élément du fichier
     
        for($i=0;$i<=$combien;$i++)
          {
           if(ereg("301",",$donnee[$i]));
             {
              //rediriger sur la page pour modifier le PIN
              fclose($ouvre);                                    //fermeture 
              header("location: testok.php");
             }
           else
             {
              //rediriger sur la page indiquant que le numéro ou l'ancien pin n'est pas correct
              fclose($ouvre);                                    //fermeture 
              header("location: testno.php");
             }
          }
       }
       
    ?>
    Et j'obtient le même résultat. Il me redirige sur testno.php => ne détecte pas 301???

  4. #4
    Membre à l'essai
    Inscrit en
    Octobre 2005
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 32
    Points : 14
    Points
    14
    Par défaut
    Il n'y a pas quelqu'un qui suarait ou est le problème???
    Merci de votre aide...

  5. #5
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Je serais toi, j'utiliserais plutot la foonction file

  6. #6
    Membre à l'essai
    Inscrit en
    Octobre 2005
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 32
    Points : 14
    Points
    14
    Par défaut
    Comment puis-je utiliser la fonction file() pour détecter un texte dans un fichier??????

  7. #7
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    file te permet juste d'éviter d'utiliser fgets, fopen, et cie
    avec file tu obtiens un tableaux où une entrée == un ligne de ton fichier,
    ensuite tu n'as plus qu'à cherhcer la ligne qui commence par "301 " et extraire le pin, si tu arrives à la fin c'est qu'il y a pas d'utilisateur.
    Tu teste soit via regexp soit de manière "sale" ou "à l'ancienne" si tu préfères

  8. #8
    Membre à l'essai
    Inscrit en
    Octobre 2005
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 32
    Points : 14
    Points
    14
    Par défaut
    OK, merci beaucoup j'ai bien compris le principe grâce à toi.
    ça signifie quoi :
    Tu teste soit via regexp soit de manière "sale" ou "à l'ancienne"

  9. #9
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut


    Les expression régulières sont puissantes et te permettent de vraimen selectionner ce que tu veux, le problème c'est que c'est complexe à prendre en main.
    La manière "à l'ancienne" c'est de supposer que ta chaine sera bien formatée, qu'il y aura qu'un '=>' dans ta chaine et de jouer avec des comparaison de chaines qui deviennent vite ingérables...

  10. #10
    Membre à l'essai
    Inscrit en
    Octobre 2005
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 32
    Points : 14
    Points
    14
    Par défaut
    AHHH, ok merci bien je te tiens au courant...

    Merci encore une fois

  11. #11
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    <pre><?php
     
    $numero = 301;
     
    $pattern = "/^".$numero."[\s]*=>[\s]*(\d*)/";
     
    $str = "301 => 2345,prenom nom,adresse@email.com";
     
    preg_match($pattern, "301 => 2345,prenom nom,adresse@email.com", $matches);
    var_dump($matches[1]);
     
    preg_match($pattern, "301=>2345,prenom nom,adresse@email.com", $matches);
    var_dump($matches[1]);
     
    preg_match($pattern, "301      =>        2345,prenom nom,adresse@email.com", $matches);
    var_dump($matches[1]);
     
    preg_match($pattern, "301 => 2345 ,prenom nom,adresse@email.com", $matches);
    var_dump($matches[1]);
     
    preg_match($pattern, "303 => 2345 ,prenom nom,adresse@email.com", $matches); //ici pas le bon numero !
    var_dump(isset($matches[1]));
     
    ?>
    jette un oeil là dessus dans un nouveau script ca devrait t'aider...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 17/04/2011, 11h42
  2. [RegEx] regex et recherche de texte dans un fichier
    Par minusette dans le forum Langage
    Réponses: 2
    Dernier message: 26/06/2007, 13h25
  3. Réponses: 22
    Dernier message: 05/09/2006, 19h32
  4. [WinXP] rechercher du texte dans les fichiers
    Par arcane dans le forum Windows XP
    Réponses: 3
    Dernier message: 05/05/2006, 12h10
  5. recherche de doublons dans un fichier texte
    Par portu dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 07/10/2003, 14h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo