Indexer le fichier du tableau php. Détection automatique du moteur du forum

Maison / Pannes

Certains modules doivent communiquer avec le matériel pour accomplir leurs tâches. Ces modules sont livrés avec une couche de pilote supplémentaire. Chaque pilote a alors besoin d'un fichier de carte pour communiquer avec le matériel réel.
Le fichier de la carte doit être fourni par l'utilisateur car sa mise en œuvre dépend non seulement du système sous-jacent utilisé (HAL), mais également de la configuration matérielle réelle (câblage).

Modèles

Chaque pilote fournit un modèle de son fichier de carte. Copier ce fichier dans le répertoire de votre projet et implémenter les routines est tout ce qu'il y a à faire. Notez que vous devez supprimer la partie _template du nom du fichier.

Cartes prises en charge

Certaines cartes ont du matériel prédéfini. Lorsqu'il s'agit d'une carte commune, nous fournissons un makefile ( /boards/base/xxx/board.mk) que vous pouvez inclure dans votre propre makefile de projet. Cela inclura alors automatiquement tous les pilotes matériels standard et les fichiers de la carte. Des fichiers de carte prédéfinis supplémentaires peuvent également être trouvés dans /planches/addons.

Commençons tout de suite par le code du script principal :

#!/usr/bin/perl

# script quel-forum.pl
# (c) 2010 Alexandre A Alexeev, http://site/

utilisez strict ;

# lignes commentées - pour la rigueur
# si la tâche consiste à collecter des statistiques sur le moteur, laissez-la telle quelle
# si vous faites une liste de forums - décommentez

mes $données ;
$data .= $_while (<> ) ;

# vérifiez combien a été alimenté par phpBB sans lien dans le pied de page
imprimer "phpbb \n"
si ($données =~ /]+href="[^"]*http:\/\/(?:www\.)?phpbb\.com\/?[^>]*>phpBB/i ou
# $data =~ /viewforum\.php\?[^""]*f=\d+/i ou
$data =~ /phpBB\-SEO/i ou
$données =~ /) ;
imprimer "ipb \n"
si ($données =~ /]+href="[^"]*http:\/\/(?:www\.)?invision(?:board|power)\.com\/?[^"]*"[^>]*> [^<]*IP\.Board/i ou
$données =~ /]+href="[^"]*http:\/\/(?:www\.)?invisionboard\.com\/?[^>]*>Invision Power Board/i ou
$données =~ /

/je ou
$données =~ /index\.php\?[^""]*showforum=\d+/i) ;
imprimer "vbulletin \n"
si ($données =~ /Alimenté par : ?[^<]+vBulletin[^<]+(?:Version)?/i ou
$données =~ /) ;
imprimer "smf \n"
si ($données =~ /]+href="[^"]*http:\/\/(?:www\.)?simplemachines\.org\/?[^>]*>Propulsé par SMF/i ou
$données =~ /index\.php\?[^""]*board=\d+\.0/i) ;
imprimer "punbb \n"
si ($données =~ /]+href="[^"]*http:\/\/(?:(?:www\.)?punbb\.org|punbb\.informer\.com)\/?"[^>]*> Jeu de motsBB/i) ;
#ou
# $data =~ /viewforum\.php\?[^""]*id=\d+/i); \n"
imprimer "fluxbb
# if($data =~ /viewtopic\.php\?id=\d+/i ou /si ( $données =~) ;
]+href="http:\/\/(?:www\.)fluxbb\.org\/?[^>]*>FluxBB/i \n"
si ($données =~ /imprimer "exbb]+href="[^"]*http:\/\/(?:www\.)?exbb\.org\/?[^>]*>ExBB/i
# $data =~ /forums\.php\?[^""]*forum=\d+/i);
imprimer "yabb \n"
si ($données =~ /]+href="[^"]*http:\/\/(?:www\.)?yabbforum\.com\/?[^>]*>YaBB/i ou
$data =~ /YaBB\.pl\?[^""]*num=\d+/i ) ;
imprimer "dleforum \n"
si ($données =~ /\(Propulsé par le forum DLE\)<\/title>/je ou
$données =~ /]+href="[^"]+(?:http:\/\/(?:www\.)?dle\-files\.ru|act=copyright)[^"]*">Forum DLE<\/a>/je) ;
imprimer "iconboard \n"
si ($données =~ /]+href="[^"]*http:\/\/(?:www\.)?ikonboard\.com\/?[^"]*"[^>]*>Ikonboard/i ou
$données =~ /\n"
si ($données =~ /]*>ExBB/i
# $data =~ /topic\.php\?id=\d+/i ou
# $data =~ /forum\.php\?id=\d+/i);
imprimer "flashbb \n"
# if($data =~ /forums\.php\?fid=\d+/i ou
# $data =~ /topic\.php\?fid=\d+/i ou
si ($données =~ /]+href="http:\/\/(?:www\.)?flashbb\.net\/?"[^>]*>FlashBB/i) ;
imprimer "stokesit \n"
# if($data =~ /forum\.php\?f=\d+/i ou
si ($données =~ /]+href="http:\/\/(?:www\.)?stokesit\.com\.au\/?"[^>]*>[^\/]*Stokes IT/i) ;
imprimer "podium \n"
# if($data =~ /topic\.php\?t=\d+/i ou
si ($données =~ /]+href=[""]?http:\/\/(?:www\.)?sopebox\.com\/?[""]?[^>]*>Podium/i) ;
imprimer "usebb \n"
# if($data =~ /forum\.php\?id=\d+/i ou
si ($données =~ /]+href="http:\/\/(?:www\.)?usebb\.net\/?"[^>]*>UtiliserBB/i) ;
imprimer "wrforum \n"
# if($data =~ /index\.php\?fid=\d+/i ou
si ($données =~ /]+href="http:\/\/(?:www\.)?wr\-script\.ru\/?"[^>]*>WR\-Forum/i) ;
imprimer "encore un autre forumnet \n"
si ($data =~ /Yet Another Forum\.net/i ou
$données =~ /default\.aspx\?g=posts&t=\d+/i) ;

Vous trouverez ceci et d’autres scripts mentionnés dans l’article de cette archive.

Scénario quel-forum.pl examine le code de la page HTML pour voir s'il contient les signatures du moteur du forum. Nous avons utilisé une technique similaire lors de la définition de WordPress et Joomla, mais il existe quelques différences. Premièrement, le script lui-même ne charge pas le code de la page, mais le lit depuis stdin ou un fichier passé en argument. Cela vous permet de télécharger la page une fois, par exemple, à l'aide de wget, puis de l'exécuter via plusieurs analyseurs, si nous en avons plusieurs. Deuxièmement, dans ce script, la présence d'une signature est à 100 % un signe du moteur. La dernière fois, la présence d'une signature n'a fait qu'ajouter du poids au moteur correspondant et le moteur avec le plus grand poids a « gagné ». J'ai décidé qu'en dans ce cas Cette approche ne fera que compliquer inutilement le code.

Pour tester le script, j'ai fait quelques recherches. J'ai compilé une liste de plusieurs milliers de forums et exécuté chacun d'eux dans mon script, déterminant ainsi le pourcentage de réponses du programme et la popularité des différents moteurs.

Pour obtenir la liste des forums, j'ai utilisé mon analyseur Google. Moteur de recherche des demandes comme

site:forum.*.ru
site:talk.*.ru
site:board.*.ru
site : smf.*.ru
site:phpbb.*.ru
....

et ainsi de suite. Vous trouverez le code complet du générateur de requêtes dans le fichier gen-forumsearch-urls.pl. En plus de zone.ru, .su .ua .kz et .by ont également été utilisés. La dernière fois, il était difficile de mener une telle étude, puisque les sites WordPress et Joomla n'ont pas de telles signatures dans l'URL. Les catalogues comme cmsmagazine.ru/catalogue/ ne fournissent pas une taille d'échantillon suffisante. Qu'est-ce que 600 sites Drupal ?

Je dois admettre que les résultats de l'expérience m'ont déçu. Sur les 12 590 sites étudiés, le moteur n'a été identifié avec succès que sur 7 083, soit seulement dans 56 % des cas. Peut-être que je n'ai pas pris en compte certains moteurs ? Était-il vraiment vrai que Bitrix était installé sur la moitié des forums ? Ou aurais-je dû passer plus de temps à chercher des signatures ? En général, des recherches supplémentaires sont nécessaires ici.

Parmi les 56 % de moteurs identifiés avec succès, les plus populaires, comme on pouvait s'y attendre, étaient IPB (31 %), phpBB (26,6 %) et vBulletin (26,5 %).

Ils sont suivis avec un large retard par SMF (5,8%) et DLEForum (5,3%). Mon punBB préféré n'était qu'à la 6ème place (1,64%). Je ne conseillerais pas de se fier beaucoup à ces chiffres (on dit qu'un forum sur trois sur RuNet fonctionne sur IPB), mais certaines conclusions peuvent bien sûr être tirées.

Par exemple, si vous avez l'intention de créer un site sur un moteur de forum et envisagez de modifier le forum, par exemple en payant aux utilisateurs 0,01 $ pour chaque message avec retrait automatique des fonds une fois par semaine, vous devez alors choisir l'un des trois moteurs les plus populaires. Plus le forum est populaire, plus grandes sont les chances de trouver un programmeur qui le connaît bien.

Si aucun changement significatif n'est attendu dans le moteur, il peut alors être judicieux de choisir un moteur moins populaire, par exemple SMF ou punBB. Cela réduira le nombre attaques de piratesà votre forum et la quantité de spam automatiquement envoyé sur celui-ci.

Les scripts de recherche/identification de forums peuvent également trouver de nombreuses applications pratiques. La première chose qui m'est venue à l'esprit a été de trier les forums identifiés par TIC et de poster sur les cent premiers posts des liens vers un de mes sites. Cependant, des centaines de liens dofollow du forum n'ont en aucune façon affecté le TCI (2 mises à jour sont passées), il vaut donc mieux ne pas perdre de temps ici, à moins que les transitions ne vous intéressent pas.

Il est clair que l’utilisation évoquée des scripts est loin d’être la seule. Je pense que vous pouvez facilement comprendre comment les utiliser autrement.


Le fichier index.php est le fichier clé du forum et est utilisé pour presque toutes les actions. Son travail comprend les étapes suivantes :
1)Connexion des fichiers de configuration database.php et iboard.php.
2) Établir une connexion au SGBD et accéder à la base de données.
3) Lire les informations des cookies de l'utilisateur ou des paramètres transmis au script, extraire les informations de cet utilisateur de la base de données et vérifier son authenticité.
4) Si la vérification échoue (ou s'il n'y a aucune information sur l'utilisateur), les données du profil utilisateur Invité (numéro d'enregistrement - 1) sont récupérées en tant que données utilisateur.
5) Les fichiers de style d'interface et de langue définis par l'utilisateur dans les paramètres de son profil sont connectés.
6) Si le paramètre t est présent dans les paramètres de l'appel de script, alors les données sur le sujet et le forum spécifiés dans lesquels ce sujet situé.
7) Si le paramètre f est présent dans les paramètres de l'appel du script, alors les données sur le forum sont extraites de la base de données.
8) Si les paramètres t ou f sont présents, on vérifiera si l'utilisateur dispose des droits suffisants pour consulter le forum correspondant.
9) Le module spécifié dans le paramètre m est connecté. Si le paramètre m est manquant, alors le type de module est déterminé en fonction du type de partition pour laquelle le cette action. Si le type de section n'est pas spécifié, une vérification est effectuée pour déterminer ce qui doit être affiché comme page d'accueil. Si l'une des sections est sélectionnée comme page principale, alors le module chargé d'afficher la section du type correspondant sera connecté, en sinon- module main.php. Un fichier de style est également inclus, qui porte le même nom que le plug-in, mais se trouve dans un sous-répertoire du répertoire styles correspondant au style sélectionné dans les paramètres du profil utilisateur.
10) Le paramètre a est vérifié. S'il n'est pas spécifié explicitement, il est déclaré égal à view. Ensuite, si une section spécifique est spécifiée et que le paramètre a est view, il est remplacé par<имя_раздела>_voir.
11)En fonction de l'action demandée (elle est indiquée dans le paramètre a de l'appel du script), soit le fichier tmplate1.php est connecté (si l'action ne contient pas le préfixe do_) soit le fichier tmplate2.php (sinon). Ensuite, toutes les actions répertoriées dans le modèle correspondant sont appelées, et au lieu de l'action main_action, l'action spécifiée dans le paramètre a sera réellement appelée.
12)Le journal du forum contient des informations sur l'action effectuée, l'identifiant et l'adresse IP de l'utilisateur qui a effectué l'action.
Le fichier index.php contient également une fonction de gestion des erreurs fatales, conçue pour afficher un message d'erreur, ainsi que pour enregistrer le texte de l'erreur dans le fichier error.log.

© 2024 ermake.ru -- À propos de la réparation de PC - Portail d'information