Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <html>
- <head>
- <title>Recherche tableau</title>
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
- </head>
- <body>
- <?php
- /*
- * AUTEUR : Tlams
- * Date(maj) : 8 Avril 2013
- * Fonction: Recherche de liens direct et indirect entres utilisateurs à partir de données IP (Ici représentés par des lettres).
- * Fonctionnement:
- * Le script parcours en boucle tout le tableau à la recherche de données correspondantes puis les classes.
- * ------------------------
- * Exemple de liens directs:
- * USER 1 = A , B
- * USER 2 = B, B
- * Donc User 1 = User 2
- * ------------------------
- * Exemple de liens indirects:
- * USER 1 = A , C
- * USER 2 = C , D
- * USER 3 = E , D
- * Donc User 1 = User 2 = User 3
- * ------------------------
- * - L'array ($tableau) peut être généré à partir d'une base de donnée SQL classique.
- * - Il faut ABSOLUMENT laisser la première ligne d'exemple (cf.plus bas).
- * - Dans le cas d'une base de donnée importante la recherche peut déboucher sur un Time Out php.
- * - Le nombre de colonnes par ligne peut être indéfini(Une ligne peut en avoir 1 et la suite 10).
- * - A VENIR : Systeme de cache afin d'éviter le Time Out php.
- */
- // Note: Ne pas laisser de valeurs vides ! Les ligne peuvent être de taille différentes .
- //Tableau Type - Generer le votre ici
- require '../inc/config.php'; // Modifier si besoin
- mysql_connect($config['database']['hostname'],$config['database']['username'],$config['database']['password']);
- mysql_select_db($config['database']['database']);
- define('IN_MYBB', 1);
- require ('../global.php');
- session_start();
- $autorise_group = array(4, 3, 6, 10); //Limitation aux groupes modérateur et admin
- if (in_array($mybb->user['usergroup'], $autorise_group))
- {
- echo
- '
- Entrer le pseudo recherché - Laisser vide pour tous <br />
- <span style="font-size:11px;">Note: La recherche peut aboudir à un Time Out si la base est importante.</span><br />
- <FORM METHOD="GET" ACTION="#">
- <input name="nom_definit">
- <input type="submit" value="Recherche">
- <input type="hidden" name="start" value="1">
- </FORM>
- ';
- if($_GET['start'] == 1)
- {
- $nom_definit = htmlentities($_GET['nom_definit']);
- /*debut du cache*/
- $cache = 'recherche_cache_'.$nom_definit.'.html';
- $expire = time() - 3600 ; // valable une heure
- $tableau[0] = array('Nom_Exemple', 'IP_1' , 'IP_2', 'IP_n'); //Ne pas supprimer cette ligne ! OBLIGATOIRE
- if(file_exists($cache) && filemtime($cache) > $expire)
- {
- if($debogue == 1) echo "Cache trouvé <br />";
- readfile($cache);
- }
- else
- {
- ob_start(); // ouverture du tampon
- if($debogue == 1) echo "N'existe pas dans le cache<br />";
- $timestart=microtime(true);
- $compteur = 1;
- $sql = "SELECT lastip,regip,username FROM ".TABLE_PREFIX."users";
- $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
- while ($data = mysql_fetch_assoc($req))
- {
- $tableau[$compteur] = array($data['username'], $data['lastip'] ,$data['regip']);
- $tableau[$compteur] = array_unique($tableau[$compteur]);
- $compteur++;
- }
- // INIT DES VARIABLES REGLAGES
- $debogue = 0; // Mettre à 1 pour activer le debogue
- // Permet de rechercher à partir d'un nom définit.
- //PROTEGER LA VARIABLE SI VENANT D'UN FORMULAIRE !!!
- //INIT DES VARIABLES FIXES
- $result_tab[] = array(); //Variable qui enregistre les résultats finaux
- $ligne_vide[] = array(); // Permet de déterminer si la ligne est vide ou pas.
- $result_memoire[] = array(); //Varible qui permet d'enregistrer dans une mémoire les données non trouvé
- $result_memoire_name[] = array(); // Idem mais pour les nom
- $compteur_recherche_memoire = 0; // Compteur d'incré
- $ligne = 0; //Compteur de lignes
- $compteur_result_tab = 0; //Compteur incremente le tableau result
- $result_tab_sortie = 0; // Compteur d'incré
- $ellement_presents = 0; // détermine si un élément est présent ou pas
- $trouver = 0; //Permet de déperminer si l'utilisateur existe... Sinon Jail !
- // Traitement si définition d'un nom précit !
- if(empty($nom_definit)) //Si pas de nom définit
- {
- $T_tableau = sizeof($tableau); // On traite TOUTES les lignes ! - Gaffe à la surcharge -
- if($debogue == 1) echo "Pas de nom définit<br />";
- }
- else
- {
- foreach ($tableau as $key => $value) //On parcours toute les ligne de notre tableau Global à la recherche de notre Nom
- {
- if(in_array($nom_definit, $tableau[$key])) // Si on le trouve
- {
- $key_ligne = $key; // On définit la ligne de départ
- $trouver = 1; // Permet de dire qu'il est trouvé...
- break; //On casse la recherche, pas besoin d'aller plus loin.
- }
- }
- if ($trouver == 0)
- {
- echo "Le nom recheché<b> ".$nom_definit." </b>n'est pas disponible !<br /> Fin de la recherche.";
- exit; // Casse du script étant donné que la recherche est nulle.
- }
- else
- {
- echo " Pour <b>".$nom_definit." </b>nous avons déterminé le résultat suivant:<br />";
- }
- $T_tableau = $key_ligne+1; //Permet de délimiter la recherche à notre ligne
- $ligne = $key_ligne; //Permet de commmencer la recherche à notre ligne
- }
- // RECHERCHE ET TRIE DU TABLEAU NIVEAU I
- while ($ligne < $T_tableau) // Parcour des lignes du tableau global.
- {
- if($debogue == 1) echo "<br />******* LIGNE =".$ligne."**********<br />";
- foreach ($tableau[$ligne] as $value) // On parcours toute la ligne x à la recherche d'une valeur
- {
- $ligne_vide[$ligne][] = $value; // Si valeur trouvé on la rentre dans un tableau !
- }
- if (!empty($ligne_vide[$ligne])) // Si elle n'est pas vide...
- {
- if($debogue == 1) echo "<br />Ligne ".$ligne." non vide <br />";
- $compteur_result_tab = 0; // RAZ compteur de parcours Tableau Global
- $result_tab_sortie++; // Incrémentation du tableau des Résultats Global
- while ($compteur_result_tab < sizeof($tableau)) // Parcours de toutes les lignes
- {
- $ellement_presents = 0; // RAZ Variable de recherche élements présents
- if($debogue == 1) echo "<br />*****************sous ligne =".$compteur_result_tab."********************<br />";
- if(!empty($result_tab[$result_tab_sortie]) and $debogue == 1) print_r($result_tab[$result_tab_sortie]);
- if(empty($result_tab[$result_tab_sortie])) //Si notre Tableau Résultat est complétement vide...
- {
- if($debogue == 1) echo "<br />Creation premier tableau resultat <br />";
- foreach ($tableau[$ligne] as $key => $value) //On parcours chaque value de la ligne de notre tableau Global
- {
- if ($key > 0) //Si la key est supérieur à 1
- {
- $result_tab[$result_tab_sortie][] = $value; // On rajoute la value à notre tableau de résultat
- $tableau[$compteur_result_tab][$key] = ''; // Et on la dégage de notre tableau Global (Pour limiter les doubles traitements)
- }
- else //Si la key est inférieur à 1 c'est qu'il s'agit du Nom de l'user
- {
- $result_tab_name[$result_tab_sortie][] = $tableau[$ligne][0]; // On le rentre donc dans un tableau de résultat de nom.
- $tableau[$compteur_result_tab][0] = ''; // Et on le dégage du tableau Global.
- }
- }
- }
- else //S'il n'est pas vide on l'utilise !
- {
- $inclu = 0; //RAZ variable d'inclusion
- 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 ...
- {
- 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.
- {
- $inclu = 1; // Si un présent ...
- break; //On casse ! Pas besoin d'aller plus loin
- }
- }
- if($inclu == 1) //Si c'est le cas !
- {
- foreach ($tableau[$compteur_result_tab] as $key => $value) // On parcour de nouveau notre ligne tableau Global
- {
- if ($key > 0) //Si la key est supérieur à 1
- {
- $result_tab[$result_tab_sortie][] = $value; // On rajoute la value à notre tableau de résultat
- $tableau[$compteur_result_tab][$key] = ''; // On la vire ! Oussst !
- }
- else
- {
- $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
- $tableau[$compteur_result_tab][0] = ''; // Comme plus haut - on le vire du tableau global.
- }
- }
- if($debogue == 1) echo "<br />Ajout dans le tableau resultat <br /><br />";
- }
- 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.
- {
- if($debogue == 1) echo "<br />Ajout dans la mémoire<br /><br />";
- foreach ($tableau[$compteur_result_tab] as $key => $value) // On parcours toute notre ligne
- {
- if ($key > 0) //On met ses caractérisque en mémoire
- {
- $result_memoire[$result_tab_sortie][] = $value;
- }
- else //mais aussi son Nom.
- {
- $result_memoire_name[$result_tab_sortie][] = $value;
- }
- }
- }
- }
- $compteur_recherche_memoire = 0; // RAZ du compteur de recherche mémoire
- if(!empty($result_memoire[$result_tab_sortie])) //Si la mémoire n'est pas vide
- {
- while ($compteur_recherche_memoire < sizeof($result_memoire[$result_tab_sortie])) // On la parcours...
- {
- if(in_array($result_memoire[$result_tab_sortie][$compteur_recherche_memoire], $result_tab[$result_tab_sortie]))
- { //On cherche si un de nos éllément classé dans result est présent dans notre mémoire
- if($debogue == 1) echo "<br />Des ellements liens sont présents";
- $ellement_presents = 1; // SI c'est le cas !!
- $result_memoire[$result_tab_sortie][$compteur_recherche_memoire] = ""; //On vire cet élément de la mémoire (Pour éviter de boucler dessus)
- break; //On casse la recherche
- }
- else
- if($debogue == 1) echo "<br />Aucun ellements présents";
- $compteur_recherche_memoire++;
- }
- }
- if($ellement_presents == 0) // si c'est pas la cas on peut passer à la ligne suivante tableau global(Partie result)
- $compteur_result_tab++;
- else
- $compteur_result_tab = 0; //Si c'est le cas on refais de 0 la recherche ! Jusqu'à ce qu'il y en est plus aucun !!
- }
- if($debogue == 1) echo "<br />Mémoire actuelle = <br/>";
- if($debogue == 1 and !empty($result_memoire[$result_tab_sortie])) print_r($result_memoire[$result_tab_sortie]);
- }
- else
- echo "La ligne du tableau est vide !<br />".$ligne_vide[$ligne];
- $ligne++; // On a finit définitivement cette ligne - on passe à la non vide suivante ! Tableau global
- }
- // AFFICHAGE
- // Il s'agit juste d'un parcours de tableau classique.
- $a = 1; // Commence le groupement à 1
- while ($a <= sizeof($result_tab_name))
- {
- $result_tab_name_sortie[$a] = array_unique($result_tab_name[$a]); //Permet de dégager les doublons
- if (sizeof($result_tab_name_sortie[$a]) > 1)
- {
- if(empty($nom_definit))
- {
- echo "<b>Groupement ".$a.":</b><br />";
- }
- foreach ($result_tab_name_sortie[$a] as $key => $value)
- {
- $sql = "SELECT usergroup,uid FROM ".TABLE_PREFIX."users WHERE username='".$value."'";
- $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
- $assoc= mysql_fetch_assoc($req);
- $iduser = $assoc['uid'];
- if($assoc['usergroup'] == 7)
- echo '<a href="https://www.pesbaw.no-ip.fr/user-'.$iduser.'.html"><s>'.$value.'</s></a><sup>Banni</sup>|';
- elseif($assoc['usergroup'] == 8)
- echo '<a href="https://www.pesbaw.no-ip.fr/user-'.$iduser.'.html"><s>'.$value.'</s></a><sup>Bloqué</sup>| ';
- else
- echo '<a href="https://www.pesbaw.no-ip.fr/user-'.$iduser.'.html">'.$value.' </a>| ';
- }
- echo "<br /><br />";
- }
- elseif(!empty($nom_definit) and sizeof($result_tab_name_sortie[$a]) <= 1 )
- echo "Aucun liens trouvés pour <b>".$nom_definit."</b>.<br />";
- $a++;
- }
- $timeend=microtime(true);
- $time=$timeend-$timestart;
- //Afficher le temps d'éxecution
- $page_load_time = number_format($time, 3);
- echo "<br />Script executé en " . $page_load_time . " sec";
- $page = ob_get_contents();
- ob_end_clean();
- file_put_contents($cache, $page) ;
- echo $page ;
- }
- }
- }
- ?>
- </body>
- </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement