Advertisement
Tlams

Recherche Users liens

Feb 9th, 2013
191
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 12.63 KB | None | 0 0
  1. <html>
  2.     <head>
  3.         <title>Recherche tableau</title>
  4.         <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  5.     </head>
  6. <body>
  7. <?php
  8.  
  9. /*
  10.  * AUTEUR : Tlams
  11.  * Date(maj) : 8 Avril 2013
  12.  * Fonction: Recherche de liens direct et indirect entres utilisateurs à partir de données IP (Ici représentés par des lettres).
  13.  * Fonctionnement:
  14.  * Le script parcours en boucle tout le tableau à la recherche de données correspondantes puis les classes.
  15.  * ------------------------
  16.  * Exemple de liens directs:
  17.  *  USER 1 = A , B
  18.  *  USER 2 = B, B
  19.  *      Donc User 1 = User 2
  20.  * ------------------------
  21.  * Exemple de liens indirects:
  22.  *  USER 1 = A , C
  23.  *  USER 2 = C , D
  24.  *  USER 3 = E , D
  25.  *      Donc User 1 = User 2 = User 3
  26.  * ------------------------
  27.  * - L'array ($tableau) peut être généré à partir d'une base de donnée SQL classique.
  28.  * - Il faut ABSOLUMENT laisser la première ligne d'exemple (cf.plus bas).
  29.  * - Dans le cas d'une base de donnée importante la recherche peut déboucher sur un Time Out php.
  30.  * - Le nombre de colonnes par ligne peut être indéfini(Une ligne peut en avoir 1 et la suite 10).
  31.  * - A VENIR : Systeme de cache afin d'éviter le Time Out php.
  32. */
  33.  
  34.  
  35. // Note: Ne pas laisser de valeurs vides ! Les ligne peuvent être de taille différentes .
  36.  
  37.  
  38. //Tableau Type - Generer le votre ici
  39.  
  40. require '../inc/config.php'; // Modifier si besoin
  41. mysql_connect($config['database']['hostname'],$config['database']['username'],$config['database']['password']);
  42. mysql_select_db($config['database']['database']);
  43.  
  44. define('IN_MYBB', 1);
  45. require ('../global.php');
  46. session_start();
  47.  
  48. $autorise_group = array(4, 3, 6, 10); //Limitation aux groupes modérateur et admin
  49.  
  50. if (in_array($mybb->user['usergroup'], $autorise_group))
  51. {  
  52.     echo
  53.     '
  54.     Entrer le pseudo recherché - Laisser vide pour tous <br />
  55.     <span style="font-size:11px;">Note: La recherche peut aboudir à un Time Out si la base est importante.</span><br />
  56.     <FORM METHOD="GET" ACTION="#">
  57.         <input name="nom_definit">
  58.         <input type="submit" value="Recherche">
  59.         <input type="hidden"  name="start"  value="1">
  60.     </FORM>
  61.    
  62.     ';
  63.    
  64.     if($_GET['start'] == 1)
  65.     {  
  66.         $nom_definit = htmlentities($_GET['nom_definit']);
  67.        
  68.             /*debut du cache*/
  69.         $cache = 'recherche_cache_'.$nom_definit.'.html';
  70.         $expire = time() - 3600 ; // valable une heure
  71.         $tableau[0] = array('Nom_Exemple', 'IP_1' , 'IP_2', 'IP_n'); //Ne pas supprimer cette ligne ! OBLIGATOIRE  
  72.         if(file_exists($cache) && filemtime($cache) > $expire)
  73.         {
  74.             if($debogue == 1) echo "Cache trouvé <br />";
  75.             readfile($cache);
  76.         }
  77.         else
  78.         {
  79.             ob_start(); // ouverture du tampon
  80.             if($debogue == 1) echo "N'existe pas dans le cache<br />";
  81.             $timestart=microtime(true);
  82.             $compteur = 1;
  83.             $sql = "SELECT lastip,regip,username FROM ".TABLE_PREFIX."users";
  84.             $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
  85.             while ($data = mysql_fetch_assoc($req))
  86.             {  
  87.                     $tableau[$compteur] =  array($data['username'], $data['lastip'] ,$data['regip']);
  88.                     $tableau[$compteur] = array_unique($tableau[$compteur]);
  89.                 $compteur++;
  90.             }
  91.    
  92.        
  93.         // INIT DES VARIABLES REGLAGES
  94.         $debogue = 0; // Mettre à 1 pour activer le debogue
  95.            
  96.         // Permet de rechercher à partir d'un nom définit.
  97.         //PROTEGER LA VARIABLE SI VENANT D'UN FORMULAIRE !!!
  98.            
  99.         //INIT DES VARIABLES FIXES
  100.         $result_tab[] = array(); //Variable qui enregistre les résultats finaux
  101.         $ligne_vide[] = array(); // Permet de déterminer si la ligne est vide ou pas.
  102.         $result_memoire[] = array(); //Varible qui permet d'enregistrer dans une mémoire les données non trouvé
  103.         $result_memoire_name[] = array(); // Idem mais pour les nom
  104.         $compteur_recherche_memoire = 0; // Compteur d'incré
  105.         $ligne = 0; //Compteur de lignes
  106.         $compteur_result_tab = 0; //Compteur incremente le tableau result
  107.         $result_tab_sortie = 0;   // Compteur d'incré
  108.         $ellement_presents = 0; // détermine si un élément est présent ou pas
  109.         $trouver = 0; //Permet de déperminer si l'utilisateur existe... Sinon Jail !
  110.        
  111.         // Traitement si définition d'un nom précit !
  112.         if(empty($nom_definit)) //Si pas de nom définit
  113.         {
  114.             $T_tableau = sizeof($tableau); // On traite TOUTES les lignes ! - Gaffe à la surcharge -
  115.             if($debogue == 1) echo "Pas de nom définit<br />";
  116.         }
  117.         else
  118.         {  
  119.             foreach ($tableau as $key => $value) //On parcours toute les ligne de notre tableau Global à la recherche de notre Nom
  120.             {
  121.                 if(in_array($nom_definit, $tableau[$key])) // Si on le trouve
  122.                 {
  123.                     $key_ligne = $key; // On définit la ligne de départ
  124.                     $trouver = 1; // Permet de dire qu'il est trouvé...
  125.                     break; //On casse la recherche, pas besoin d'aller plus loin.
  126.                 }
  127.             }
  128.             if ($trouver == 0)
  129.             {
  130.                 echo "Le nom recheché<b> ".$nom_definit." </b>n'est pas disponible !<br /> Fin de la recherche.";
  131.                 exit; // Casse du script étant donné que la recherche est nulle.
  132.             }
  133.             else
  134.             {
  135.                 echo " Pour <b>".$nom_definit." </b>nous avons déterminé le résultat suivant:<br />";
  136.             }
  137.             $T_tableau = $key_ligne+1; //Permet de délimiter la recherche à notre ligne
  138.             $ligne = $key_ligne; //Permet de commmencer la recherche à notre ligne
  139.         }
  140.        
  141.        
  142.         // RECHERCHE ET TRIE DU TABLEAU NIVEAU I
  143.         while ($ligne < $T_tableau) // Parcour des lignes du tableau global.
  144.         {
  145.             if($debogue == 1) echo "<br />******* LIGNE =".$ligne."**********<br />";
  146.            
  147.             foreach ($tableau[$ligne] as $value) // On parcours toute la ligne x à la recherche d'une valeur
  148.             {
  149.                 $ligne_vide[$ligne][] = $value; // Si valeur trouvé on la rentre dans un tableau !
  150.             }
  151.            
  152.             if (!empty($ligne_vide[$ligne])) // Si elle n'est pas vide...
  153.             {
  154.                 if($debogue == 1) echo "<br />Ligne ".$ligne." non vide <br />";
  155.                 $compteur_result_tab = 0; // RAZ compteur de parcours Tableau Global
  156.                 $result_tab_sortie++; // Incrémentation du tableau des Résultats Global
  157.                 while ($compteur_result_tab < sizeof($tableau)) // Parcours de toutes les lignes
  158.                 {
  159.                     $ellement_presents = 0; // RAZ Variable de recherche élements présents
  160.                     if($debogue == 1) echo "<br />*****************sous ligne =".$compteur_result_tab."********************<br />";
  161.                     if(!empty($result_tab[$result_tab_sortie]) and $debogue == 1) print_r($result_tab[$result_tab_sortie]);        
  162.                     if(empty($result_tab[$result_tab_sortie]))  //Si notre Tableau Résultat est complétement vide...
  163.                     {          
  164.                         if($debogue == 1) echo "<br />Creation premier tableau resultat <br />";                                   
  165.                         foreach ($tableau[$ligne] as $key => $value) //On parcours chaque value de la ligne de notre tableau Global
  166.                         {
  167.                             if ($key > 0) //Si la key est supérieur à 1
  168.                             {
  169.                                 $result_tab[$result_tab_sortie][] = $value; // On rajoute la value à notre tableau de résultat
  170.                                 $tableau[$compteur_result_tab][$key] = ''; // Et on la dégage de notre tableau Global (Pour limiter les doubles traitements)
  171.                             }
  172.                             else //Si la key est inférieur à 1 c'est qu'il s'agit du Nom de l'user
  173.                             {
  174.                                 $result_tab_name[$result_tab_sortie][] = $tableau[$ligne][0]; // On le rentre donc dans un tableau de résultat de nom.
  175.                                 $tableau[$compteur_result_tab][0] = ''; // Et on le dégage du tableau Global.
  176.                             }
  177.                         }                  
  178.                     }  
  179.                     else //S'il n'est pas vide on l'utilise !
  180.                     {
  181.                         $inclu = 0; //RAZ variable d'inclusion                         
  182.                         foreach ($tableau[$compteur_result_tab] as $key => $value) //Permet de déterminer si un de nos nouveaux éllement est présent dans le tableau result ...
  183.                         {
  184.                             if ($key > 0 AND in_array($value, $result_tab[$result_tab_sortie])) //On parcour notre tableau de result en comparant chaques éllément de notre ligne tableau global.
  185.                             {
  186.                                 $inclu = 1; // Si un présent ...
  187.                                 break;   //On casse ! Pas besoin d'aller plus loin
  188.                             }      
  189.                         }
  190.                         if($inclu == 1) //Si c'est le cas !
  191.                          {                             
  192.                             foreach ($tableau[$compteur_result_tab] as $key => $value) // On parcour de nouveau notre ligne tableau Global
  193.                             {
  194.                                 if ($key > 0) //Si la key est supérieur à 1
  195.                                 {
  196.                                     $result_tab[$result_tab_sortie][] = $value; // On rajoute la value à notre tableau de résultat
  197.                                     $tableau[$compteur_result_tab][$key] = '';  // On la vire ! Oussst !
  198.                                 }
  199.                                 else
  200.                                 {
  201.                                     $result_tab_name[$result_tab_sortie][] = $tableau[$compteur_result_tab][0]; // Il s'agit du nom - On le rajoute a notre liste de nom result
  202.                                     $tableau[$compteur_result_tab][0] = ''; // Comme plus haut - on le vire du tableau global.
  203.                                 }
  204.                             }                          
  205.                             if($debogue == 1) echo "<br />Ajout dans le tableau resultat <br /><br />";                                  
  206.                          } 
  207.                          else // Si notre tableau result n'est pas vide et que la ligne no comprend pas d'éllement dedant, on la calle en mémoire.
  208.                         {
  209.                             if($debogue == 1) echo "<br />Ajout dans la mémoire<br /><br />";                     
  210.                             foreach ($tableau[$compteur_result_tab] as $key => $value)  // On parcours toute notre ligne
  211.                             {
  212.                                 if ($key > 0) //On met ses caractérisque en mémoire
  213.                                 {
  214.                                     $result_memoire[$result_tab_sortie][] = $value;
  215.                                 }
  216.                                 else //mais aussi son Nom.
  217.                                 {
  218.                                     $result_memoire_name[$result_tab_sortie][] = $value;
  219.                                 }
  220.                             }                          
  221.                          }     
  222.                     }
  223.                     $compteur_recherche_memoire = 0; // RAZ du compteur de recherche mémoire
  224.                     if(!empty($result_memoire[$result_tab_sortie])) //Si la mémoire n'est pas vide
  225.                     {
  226.                         while ($compteur_recherche_memoire < sizeof($result_memoire[$result_tab_sortie])) // On la parcours...
  227.                         {
  228.                             if(in_array($result_memoire[$result_tab_sortie][$compteur_recherche_memoire], $result_tab[$result_tab_sortie]))
  229.                                 {  //On cherche si un de nos éllément classé dans result est présent dans notre mémoire
  230.                                     if($debogue == 1) echo "<br />Des ellements liens sont présents";
  231.                                     $ellement_presents = 1; // SI c'est le cas !!
  232.                                     $result_memoire[$result_tab_sortie][$compteur_recherche_memoire] = ""; //On vire cet élément de la mémoire (Pour éviter de boucler dessus)
  233.                                     break; //On casse la recherche
  234.                                 }
  235.                             else  
  236.                                 if($debogue == 1) echo "<br />Aucun ellements présents";                  
  237.                             $compteur_recherche_memoire++;
  238.                         }  
  239.                     }          
  240.                     if($ellement_presents == 0) // si c'est pas la cas on peut passer à la ligne suivante tableau global(Partie result)
  241.                         $compteur_result_tab++;
  242.                     else
  243.                         $compteur_result_tab = 0; //Si c'est le cas on refais de 0 la recherche ! Jusqu'à ce qu'il y en est plus aucun !!
  244.                 }
  245.                 if($debogue == 1) echo "<br />Mémoire actuelle = <br/>";
  246.                 if($debogue == 1 and !empty($result_memoire[$result_tab_sortie])) print_r($result_memoire[$result_tab_sortie]);
  247.             }
  248.             else
  249.                  echo "La ligne du tableau est vide !<br />".$ligne_vide[$ligne];  
  250.         $ligne++; // On a finit définitivement cette ligne - on passe à la non vide suivante ! Tableau global
  251.         }
  252.        
  253.          // AFFICHAGE
  254.          // Il s'agit juste d'un parcours de tableau classique.
  255.          
  256.         $a = 1; // Commence le groupement à 1
  257.         while ($a <= sizeof($result_tab_name))
  258.         {
  259.             $result_tab_name_sortie[$a] = array_unique($result_tab_name[$a]); //Permet de dégager les doublons
  260.             if (sizeof($result_tab_name_sortie[$a]) > 1)
  261.             {
  262.                 if(empty($nom_definit))
  263.                 {
  264.                     echo "<b>Groupement ".$a.":</b><br />";
  265.                 }
  266.                 foreach ($result_tab_name_sortie[$a] as $key => $value)
  267.                 {
  268.                     $sql = "SELECT usergroup,uid FROM ".TABLE_PREFIX."users WHERE username='".$value."'";
  269.                     $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
  270.                     $assoc= mysql_fetch_assoc($req);       
  271.                     $iduser = $assoc['uid'];
  272.                     if($assoc['usergroup'] == 7)
  273.                         echo '<a href="https://www.pesbaw.no-ip.fr/user-'.$iduser.'.html"><s>'.$value.'</s></a><sup>Banni</sup>|';     
  274.                     elseif($assoc['usergroup'] == 8)
  275.                         echo '<a href="https://www.pesbaw.no-ip.fr/user-'.$iduser.'.html"><s>'.$value.'</s></a><sup>Bloqué</sup>| ';  
  276.                     else
  277.                         echo '<a href="https://www.pesbaw.no-ip.fr/user-'.$iduser.'.html">'.$value.' </a>| ';      
  278.                 }
  279.                 echo "<br /><br />";
  280.             }
  281.             elseif(!empty($nom_definit) and sizeof($result_tab_name_sortie[$a]) <= 1 )
  282.                 echo "Aucun liens trouvés pour <b>".$nom_definit."</b>.<br />";
  283.             $a++;
  284.         }
  285.        
  286.             $timeend=microtime(true);
  287.             $time=$timeend-$timestart;
  288.            
  289.             //Afficher le temps d'éxecution
  290.             $page_load_time = number_format($time, 3);
  291.             echo "<br />Script executé en " . $page_load_time . " sec";   
  292.              
  293.             $page = ob_get_contents();
  294.             ob_end_clean();
  295.              
  296.             file_put_contents($cache, $page) ;
  297.             echo $page ;
  298.         }  
  299.     }
  300. }
  301. ?>
  302.  
  303. </body>
  304. </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement