PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 Re : Forum Général PHP » Moteur de recherches multiligne, sos » 19-12-2009 11:06:19

bonjour,

j'ai essayé de bosser sur for et preg match mais je ne comprends rien, j'ai relu les tutos sur for mais tout ce que je trouve comme exemple c'est pour incrémenter ou décrementer , ce qui n'est  pas mon cas sad

passez de bonnes fêtes

#2 Re : Forum Général PHP » Moteur de recherches multiligne, sos » 19-12-2009 11:06:19

j'aimerais bien essayé quand même si tu me veux bien continuer a me filer un petit coup de main, c'est vrai que sur le site que je te donnais en exemple, le temps de réponse est assez long, mais le principe doit être sensiblement le même.

Par la suite , j'aurais le code complet, ce qui me permettra de bosser sur le fait de découper les lignes pour chercher dans la partie qui m'interesse de cette ligne , dans chaque catégorie de ligne, les parties seront toujours les mêmes, pour reprendre l'exemple des lignes ci dessus :

R3 - URLSearchHook: (no name) - {0579B4B6-0293-4d73-B02D-5EBB0BA0F0A2} - C:\Program Files\AskSBar\SrchAstt\1.bin\A2SRCHAS.DLL
R3 - URLSearchHook: (no name) - {9CB65206-89C4-402c-BA80-02D8C59F9B1D} - C:\Program Files\AskTBar\SrchAstt\1.bin\A5SRCHAS.DLL

O2 - BHO: Ask Toolbar BHO - {F0D4B231-DA4B-4daf-81E4-DFEE4931A4AA} - C:\Program Files\AskSBar\bar\1.bin\ASKSBAR.DLL
O2 - BHO: Ask Toolbar BHO - {FE063DB1-4EC0-403e-8DD8-394C54984B2C} - C:\Program Files\AskTBar\bar\1.bin\ASKTBAR.DLL

O9 - Extra button: Titan Poker - {49783ED4-258D-4f9f-BE11-137C18D3E543} - C:\Poker\Titan Poker\casino.exe

raison pour laquelle j'avais pensé a Worldwrap mais qui va être difficile a mettre en place car toutes les catégories de lignes ne sont pas les mêmes !

bon week-end

#4 Re : Forum Général PHP » Moteur de recherches multiligne, sos » 19-12-2009 11:06:19

salut,

ca fonctionne :

array(101) { [0]=>  string(41) "Logfile of Trend Micro HijackThis v2.0.2 " [1]=>  string(38) "Scan saved at 13:36:04, on 2009-11-29 " [2]=>  string(43) "Platform: Windows XP SP3 (WinNT 5.01.2600) " [3]=>  string(48) "MSIE: Internet Explorer v8.00 (8.00.6001.18702) " [4]=>  string(18) "Boot mode: Normal " [5]=>  string(1) " " [6]=>  string(19) "Running processes: " [7]=>  string(29) "C:\WINDOWS\System32\smss.exe " [8]=>  string(33) "C:\WINDOWS\system32\winlogon.exe " [9]=>  string(33) "C:\WINDOWS\system32\services.exe " [10]=>  string(30) "C:\WINDOWS\system32\lsass.exe " ...

[code source] array(101) {
  [0]=>
  string(41) "Logfile of Trend Micro HijackThis v2.0.2
"
  [1]=>
  string(38) "Scan saved at 13:36:04, on 2009-11-29
"
  [2]=>
  string(43) "Platform: Windows XP SP3 (WinNT 5.01.2600)
"
  [3]=>
  string(48) "MSIE: Internet Explorer v8.00 (8.00.6001.18702)
"
  [4]=>
  string(18) "Boot mode: Normal
"
  [5]=>
  string(1) "
"
  [6]=>
  string(19) "Running processes:
"
  [7]=>
  string(29) "C:\WINDOWS\System32\smss.exe
"
  [8]=>
  string(33) "C:\WINDOWS\system32\winlogon.exe
...
[/code]

je me demande si cela ne serait pas mieux de lire toute la base de donnée et de rechercher dans chaque ligne les résultats de la requête.

je ne savais pas qu'on pouvait le faire dans ce sens la , mais on aurait pas le même probleme ?

Enfin à voir, je suis pas vraiment très frais actuellement... Passé la nuit sur un projet et j'ai trop peu dormi.

c'est deja tres sympa de m'aider, je vais pas jouer les impatients... en attendant, je vais essayer d'en apprendre un peu plus

merci, bon week, et bon courage pour ton projet

#5 Re : Forum Général PHP » Moteur de recherches multiligne, sos » 19-12-2009 11:06:19

En fait, c'est compliqué désolé, et c'est peut être pour ca que tout le monde bloque un peu roll, c'est la raison pour laquelle j'avais utilisé l'exemple de marc et sa clio tongue

Chaque ligne du rapport en exemple plus haut dans le sujet (Comme celui ci) doit être étudié une par une .

Ensuite dans une ligne, la partie présente dans ma BDD peut être a différents endroits, exemple en gras :

R3 - URLSearchHook: (no name) - {0579B4B6-0293-4d73-B02D-5EBB0BA0F0A2} - C:\Program Files\AskSBar\SrchAstt\1.bin\A2SRCHAS.DLL
R3 - URLSearchHook: (no name) - {9CB65206-89C4-402c-BA80-02D8C59F9B1D} - C:\Program Files\AskTBar\SrchAstt\1.bin\A5SRCHAS.DLL

O2 - BHO: Ask Toolbar BHO - {F0D4B231-DA4B-4daf-81E4-DFEE4931A4AA} - C:\Program Files\AskSBar\bar\1.bin\ASKSBAR.DLL
O2 - BHO: Ask Toolbar BHO - {FE063DB1-4EC0-403e-8DD8-394C54984B2C} - C:\Program Files\AskTBar\bar\1.bin\ASKTBAR.DLL

O9 - Extra button: Titan Poker - {49783ED4-258D-4f9f-BE11-137C18D3E543} - C:\Poker\Titan Poker\casino.exe

...

En fait toutes les parties en gras sont dans ma BDD, c'est donc la que je souhaiterais afficher la ligne avec un X ou n'importe quoi d'autre...

j'essaie d'etre le plus clair possible , pour te donner une idée, voici un site qui faisait la meme chose mais plus a jour, tu peux coller le rapport que j'ai mis en exemple, tu verras le resultat, ce sera plus parlant.

merci encore pour ton aide wink

Edit : je vais essayer de me pencher la dessus, qu'en pensez vous :
http://fr.php.net/manual/fr/function.wordwrap.php

#6 Re : Forum Général PHP » Moteur de recherches multiligne, sos » 19-12-2009 11:06:19

voila ce que c'est de foncer tête baissée roll

voici ce que ca donne, en effet , il n'y a aucun decoupage apparemment sad

qu'en penses tu ?

NULL

Array
(
    [rapport] => Logfile of Trend Micro HijackThis v2.0.2
Scan saved at 17:47:54, on 02/12/2009
Platform: Windows XP SP3 (WinNT 5.01.2600)
MSIE: Internet Explorer v8.00 (8.00.6001.18702)
Boot mode: Normal

Running processes:
C:\WINDOWS\System32\smss.exe
C:\WINDOWS\system32\winlogon.exe
...
...
...

R0 - HKCU\Software\Microsoft\Internet Explorer\Main,Start Page = http://search.mywebsearch.com/mywebsear ... tBqortmpvw
...
...
...

--
End of file - 10675 bytes

)

aucun résultat

#7 Re : Forum Général PHP » Moteur de recherches multiligne, sos » 19-12-2009 11:06:19

bonjour,

toujours un probleme "argument foreach... j'ai beau retourner le probleme , je ne vois pas pourquoi,

je n'arrive pas a le faire fonctionner ton code, je l'ai mis ici :

if(get_magic_quotes_gpc()) {

                  $_POST = array_map('stripslashes', $_POST);

                  $_GET = array_map('stripslashes', $_GET);

                  $_COOKIE = array_map('stripslashes', $_COOKIE);

                  }
            echo"<pre>";
 
            print_r($mon_array);
   
            echo"</pre>";

            $rapport = trim($_POST['rapport']);

            $tableau = explode("et",$rapport_ligne);

      $outil = trim($tableau[1]);

            var_dump($lignes);

            foreach($lignes as $ligne);
            {

       
         $sql= 'SELECT v.outil, m.outil
   
         FROM changelog AS v
 
         INNER JOIN outil AS m ON v.outil = m.id
 
         WHERE  v.outil = "outil"'
;

et j'ai essayé aussi en dessous du foreach

merci

#8 Re : Forum Général PHP » Moteur de recherches multiligne, sos » 19-12-2009 11:06:19

j'ai une erreur toujours avec le foreach apparemment :

[02-Dec-2009 17:30:56] PHP Warning:  Invalid argument supplied for foreach() in /.../cible.php on line 25


Tentes de les afficher pour voir si le découpage du texte s'est déroulé comme tu le souhaitais.

neutral comment ?

#9 Re : Forum Général PHP » Moteur de recherches multiligne, sos » 19-12-2009 11:06:19

Bonjour,

Pour le foreach, il manquait simplement le ";"  wink

Par contre , j'ai toujours le même résultat : NULL aucun résultat sad

une idée peut être ?

bonne journée

#10 Re : Forum Général PHP » Moteur de recherches multiligne, sos » 19-12-2009 11:06:19

bon , l'exemple de Marc et sa clio, c'était pour vous simplifier la compréhension, vous l'aurez compris tongue

afin de mieux me comprendre , le but de mon site est d'analyser des rapport de différents outils de securite informatique et d'informer s'il y' a un/des fichier(s) néfaste(s), et quel outil utiliser pour supprimer le/les infections.

Cet outil (s'il fonctionne correctement) sera amené à être utilisé par une partie de la communauté anti-malware ( qui aide les internautes infectés sur différents forums)
comme vous, vous le faites avec le codage smile

voici un type de rapport que je souhaite comparer a ma bdd : (les liens sont archivés ==> rien a craindre)

http://www.cijoint.fr/cjlink.php?file=c … 27r7EL.txt

et voici les captures écran des tables que vous m'avez suggéré :

http://www.cijoint.fr/cjlink.php?file=c … QXS1oU.jpg
http://www.cijoint.fr/cjlink.php?file=c … 3ui4YH.jpg

donc prenons un exemple : l'user poste son rapport dans lequel se trouve par exemple cette ligne :

O3 - Toolbar: Ask Toolbar - {FE063DB9-4EC0-403e-8DD8-394C54984B2C} - C:\Program Files\AskTBar\bar\1.bin\ASKTBAR.DLL

Ask est un moteur de recherche considéré comme néfaste, il est donc présent dans au moins 2 des outils de securité présents dans ma bdd : ADRemover et ToolbarSD
(dans le champs contenu de la table changelog)

le but est donc d'afficher la ligne ci dessus avec comme résultat : /!\ fichier néfaste, pour le supprimer : ADRemover ou ToolbarSD

voila, vous savez tout, j'ai été long, désolé pour la lecture mais je voulais que vous ayez toutes les cartes pour bien comprendre ... surtout que j'imagine que ce type de code ne doit pas être tres courant smile

et voici donc mon code remis a jour : (j'ai testé : affiche NULL et error dans argument foreach ligne 25) (je ne révais pas non plus du premier coup tongue)

 <?php

            mysql_connect(localhost,id,mdp);

             mysql_select_db(base);

            if(get_magic_quotes_gpc()) {

                  $_POST = array_map('stripslashes', $_POST);

                  $_GET = array_map('stripslashes', $_GET);

                  $_COOKIE = array_map('stripslashes', $_COOKIE);

                  }

            $rapport = trim($_POST['rapport']);

            $tableau = explode("et",$rapport_ligne);

      $outil = trim($tableau[1]);

            var_dump($lignes);

            foreach($lignes as $ligne) {

       
         $sql= 'SELECT v.outil, m.outil
   
         FROM changelog AS v
 
         INNER JOIN outil AS m ON v.outil = m.id
 
         WHERE  v.outil = "outil"'
;

                  $req = mysql_query($sql) or die('Erreur dans <strong>'.$sql.'</strong> :<br/>'.mysql_error());


                  $nb = mysql_num_rows($req);

                  if($nb == 0) {

                      echo "aucun résultat";


                  } else {


                      $result = mysql_fetch_assoc($req);


                      $contenu = $result['contenu'];


                      if(contenu == true) {


                          echo "$titre !<br />";


                      } else {


                          echo "V<br />";


                      }


                  }


                  }
 



et merci encore wink

#11 Re : Forum Général PHP » Moteur de recherches multiligne, sos » 19-12-2009 11:06:19

bonjour et merci pour ces reponses,

vous chamaillez pas pour moi tongue

je vais tester ca et vous tiens au courant

question d'ordre général :  comme tu l'expliques Kris, les "normes" changent, quel en est la raison ?
seulement histoire de coder plus proprement ou est ce plutot pour contrer des failles de sécurité ?

#12 Re : Forum Général PHP » Moteur de recherches multiligne, sos » 19-12-2009 11:06:19

merci pour tout pour votre aide tous les deux smile

au depart mon idée n'était pas cette fin, je voulais comparer toujours le même rapport dans une table qui contient 6 champs et afficher le titre du champs si une ligne était présente, mais on m'a dit que c'etait impossible, comme vous avez l'air d'être incollables, vous me confirmerez ou pas  tongue

j'ai donc une table contenant 6 champs de marques de voitures (contenant chacun toute la liste de leur propres noms), nommons les renault, peugeot, citroen, lada, mercedes et bmw.
ma table est comme ceci :id , marque(renault...), leurs_noms (clio, r19, laguna...)

L'internaute poste donc un rapport contenant une cinquantaine de lignes ,
1 ligne contient l"expression "marc a une clio" (se trouvant dans le champ renault)
1 ligne contient l'expression "paul a une 407"(se trouvant dans le champ peugeot)

(les 48 autres lignes ne se trouvent nullepart donc je n'affiche rien) par contre je voudrais que pour les 2 lignes ci dessus on affiche :

marc a une clio  : Champ /!\ RENAULT
paul a une 407  : Champs /!\ PEUGEOT

est ce possible , pour vous montrer que je 'essaie de reflechir, je penserais a quelquechose type :

   1.
             <?php
   2.
            mysql_connect(localhost,$id,$mdp);
   3.
             mysql_select_db($ma_base);
   4.
            if(get_magic_quotes_gpc()) {
   5.
                  $_POST = array_map('stripslashes', $_POST);
   6.
                  $_GET = array_map('stripslashes', $_GET);
   7.
                  $_COOKIE = array_map('stripslashes', $_COOKIE);
   8.
                  }
   9.
            $rapport = trim($_POST['rapport']);
  10.
            $lignes = explode("\n",$rapport);
  11.
            var_dump($lignes);
  12.
            foreach($lignes as $ligne) {
  13.
                  $sql = 'SELECT leurs_noms FROM ma_table WHERE ligne = "'.$ligne.'"';
  14.
                  $req = mysql_query($sql) or die('Erreur dans <strong>'.$sql.'</strong> :<br/>'.mysql_error());
  15.
                  $nb = mysql_num_rows($req);
  16.
                  if($nb == 0) {  // pas de resultats
  17.
                      echo "aucun résultat"; :: forcement
  18.
                  } else {
  19.
                      $result = mysql_fetch_assoc($req);
  20.
                      $leurs_noms = $result['leurs_noms']; // clio, 407
  21.
                      if($leurs_noms == true) { // clio et 407 font partie de contenu de marque
  22.
                          echo "$marque !<br />"; // renault peugeot
  23.
                      } else {
  24.
                          echo "V<br />"; // bah la je sais pas car je cite : Euh rien si je ne m'abuse car un boolean ne peut pas s'afficher.
  25.
                      }
  26.
                  }
  27.
                  }
 

soyez sympas, vous moquez pas, au moins, j'essaie smile

encore MERCI de m'aider et bonne soirée

#13 Re : Forum Général PHP » Moteur de recherches multiligne, sos » 19-12-2009 11:06:19

j'ai essayé avec mon pseudo (absent de ma table évidemment) et un fichier (présent dans la table)

array(2) { [0]=>  string(9) "debutant " [1]=>  string(8) "ogopxhpq" } VV

maintenant, j'ai un problème à partir de la condition , pas étonnant, je ne le comprends pas moi même tongue

Mais si le dessus fonctionne, ca me rassure un peu, je suis pas si nul que ca smile

#14 Re : Forum Général PHP » Moteur de recherches multiligne, sos » 19-12-2009 11:06:19

arffffffff quelle andouille, je venais éditer mais tu as répondu plus vite que moi, j'ai copié/collé le code sans changer les id ^^, je reviens

merci encore du temps accordé

#15 Re : Forum Général PHP » Moteur de recherches multiligne, sos » 19-12-2009 11:06:19

Pardon hmm

array(2) { [0]=>  string(41) "Logfile of Trend Micro HijackThis v2.0.2 " [1]=>  string(37) "Scan saved at 17:39:06, on 27/11/2009" } Erreur dans SELECT autorise FROM test WHERE ligne = "Logfile of Trend Micro HijackThis v2.0.2 " :
Access denied for user 'xxx'@'localhost' (using password: NO)

#16 Re : Forum Général PHP » Moteur de recherches multiligne, sos » 19-12-2009 11:06:19

je viens de lire 4 ou 5 articles pour comprendre roll , donc si j'ai bien lu, il devrait se trouver la :


       <?php
      mysql_connect(localhost,$id,$mdp);
       mysql_select_db($ma_table);
      if(get_magic_quotes_gpc()) {
            $_POST = array_map('stripslashes', $_POST);
            $_GET = array_map('stripslashes', $_GET);
            $_COOKIE = array_map('stripslashes', $_COOKIE);
            }
      $rapport = trim($_POST['rapport']);
      $lignes = explode("\n",$rapport);
      var_dump($lignes);
      foreach($lignes as $ligne) {
            $sql = 'SELECT autorise FROM test WHERE ligne = "'.$ligne.'"';
            $req = mysql_query($sql) or die('Erreur dans <strong>'.$sql.'</strong> :<br/>'.mysql_error());
            $nb = mysql_num_rows($req);
            if($nb == 0) {
                echo "V";
            } else {
                $result = mysql_fetch_assoc($req);
                $autorise = $result['autorise'];
                if($autorise == true) {
                    echo "$autorise !<br />";
                } else {
                    echo "V<br />";
                }
            }
            }

merci smile

#17 Re : Forum Général PHP » Moteur de recherches multiligne, sos » 19-12-2009 11:06:19

Bonjour,

a la formulation de la question et en y reflechissant un peu en épluchant le code, je dirais " a rien " !

je pars du principe que tout le monde a commencé un jour, et quand je dis : je debute en php (en codage tout court d'ailleurs), il n'y a rien d'imagé, on m'a même fait comprendre quand j'ai soumis l'idée que, sans aide , ce serait impossible, mais j'aime bien les défis (même si celui la est corsé...)

je sais que vous n'êtes pas partisans de fournir des codes préremplis ... et ce n'est pas ce que je veux mais plutôt des orientations

#18 Re : Forum Général PHP » Moteur de recherches multiligne, sos » 19-12-2009 11:06:19

Bonjour Xtg et merci pour votre réponse,

j'ai donc rectifié ce que j'ai pu mais je ne comprends pas pour le foreach

apparemment , j'ai aussi une erreur :
PHP Warning:  mysql_num_rows(): supplied argument is not a valid MySQL result resource ,

j'ai beau lire et relire les notes, je ne vois pas pourquoi , voici ou j'en suis :

 <?php
mysql_connect(localhost,$id,$mdp);
 mysql_select_db($ma_table);
if(get_magic_quotes_gpc()) {
      $_POST = array_map('stripslashes', $_POST);
      $_GET = array_map('stripslashes', $_GET);
      $_COOKIE = array_map('stripslashes', $_COOKIE);
      }
$_POST['rapport'];

$rapport = trim($_POST['rapport']);
$lignes = explode("\n",$rapport);
foreach($lignes as $ligne) {
      $sql = 'SELECT autorise FROM test WHERE ligne = "'.$ligne.'"';
      $req = mysql_query($sql) or die('Erreur dans <strong>'.$sql.'</strong> :<br/>'.mysql_error());
      $nb = mysql_num_rows($req);
      if($nb == 0) {
          echo "V";
      } else {
          $result = mysql_fetch_assoc($req);
          $autorise = $result['autorise'];
          if($autorise == true) {
              echo "$autorise !<br />";
          } else {
              echo "V<br />";
          }
      }
      }

en plus ce qui est pénible, c'est que les solutions varient d'un site ou d'un tuto a un autre, difficile de s'y retrouver, je vais continuer mes recherches en esperant compter un peu sur votre aide, j'aime bien apprendre et appliquer mais la j'avoue que le codage n'est pas si facile ...

merci encore pour votre aide

#19 Forum Général PHP » Moteur de recherches multiligne, sos » 19-12-2009 11:06:19

debutant
Réponses : 37

Bonjour a tous,

je me suis mis au php que récemment et j'avoue que je me suis embrouillé , je souhaite faire un site analyseur de rapports en sécurité informatique comme celui ci qui n'est plus a jour :
http://www.hijackthis.de/fr
exemple de ligne du rapport : O4 - HKLM\..\Run: [QuickTime Task] "C:\Program Files\QuickTime\QTTask.exe" -atboottime

l'utilisateur envoie via un formulaire son rapport et en comparant avec ma BDD , ca affiche un X si la ligne est présente ou un V si la ligne n'y est pas , j'espere que c'est clair :

mais mon code ne fonctionne pas, erreurs ou ecran blanc !

quelqu'un aurait il la gentillesse de m'aider ? au cas ou , merci d'avance

le form :

<br>
<div style="text-align: center;"><form action="cible.php" method="post"><textarea name="rapport" cols="100" rows="20">Collez ici
votre rapport
</textarea><input value="Analyser" type="submit">

la cible:

<?php
mysql_connect(localhost,$id,$mdp);
mysql_select_db($ma table);

if(get_magic_quotes_gpc()) {
$_POST = array_map('stripslashes', $_POST);
$_GET = array_map('stripslashes', $_GET);
$_COOKIE = array_map('stripslashes', $_COOKIE);
}

$_POST['rapport'] = 'rapport';

$rapport = trim($_POST['rapport']);
$lignes = explode("\n",$rapport);

foreach($lignes as $ligne) {
$sql = 'SELECT autorise FROM test WHERE ligne = "'.$ligne.'"';
$req = mysql_query($sql) or die('Erreur dans <strong>'.$sql.'</strong> :<br/>'.mysql_error());
$nb = mysql_num_rows ($req);

if($nb == 0) {
    echo "V";
} else {
    $result = mysql_fetch_assoc($req);
    $autorise = $result['autorise'];
    if($autorise == true) {
        echo "$autorise !<br />";
    } else {
        echo "V<br />";
    }
}
}
?>

mais je crois que j'ai fais des choses bizarres, encore merci infiniment pour votre aide, ca fait un mois que j'épluche les forums et les tutos mais je crois que je ne suis pas doué pour ca ...

Pied de page des forums

Propulsé par FluxBB