Zbulimi automatik i motorit të forumit. Zbulimi automatik i motorit të forumit bordi i indeksit të skedarëve php

Le të fillojmë menjëherë me kodin kryesor të skriptit:

#!/usr/bin/perl

Script # which-forum.pl
# (c) 2010 Alexandr A Alexeev, http://website/

përdorni strikte;

# rreshta të komentuar - për rreptësi
# nëse detyra është të mbledhësh statistikat e motorit, lëreni ashtu siç është
# nëse bëni një listë të forumeve - anuloni komentet

të dhënat e mia $;
$data .= $_ ndërsa (<> ) ;

# kontrolloni se sa janë mundësuar nga phpBB pa lidhjen e fundit
printoni "phpbb \n"
nëse ($data =~ /]+href="[^"]*http:\/\/(?:www\.)?phpbb\.com\/?"[^>]*>phpBB/i ose
# $data =~ /viewforum\.php\?[^""]*f=\d+/i ose
$data =~ /phpBB\-SEO/i ose
$data =~ /) ;
print "ipb \n"
nëse ($data =~ /]+href="[^"]*http:\/\/(?:www\.)?invision(?:board|power)\.com\/?[^"]*"[^>]*> [^<]*IP\.Board/i ose
$data =~ /]+href="[^"]*http:\/\/(?:www\.)?invisionboard\.com\/?"[^>]*>Invision Power Board/i ose
$data =~ /

/i ose
$data =~ /index\.php\?[^""]*showforum=\d+/i) ;
print "vbulletin \n"
nëse ($data =~ / Mundësuar nga:?[^<]+vBulletin[^<]+(?:Version)?/i ose
$data =~ /) ;
print "smf \n"
nëse ($data =~ /]+href="[^"]*http:\/\/(?:www\.)?simplemachines\.org\/?"[^>]*> Mundësuar nga SMF/i ose
$data =~ /index\.php\?[^""]*board=\d+\.0/i) ;
print "punbb \n"
nëse ($data =~ /]+href="[^"]*http:\/\/(?:(?:www\.)?punbb\.org|punbb\.informer\.com)\/?"[^>]*> PunBB/i) ; #ose
# $data =~ /viewforum\.php\?[^""]*id=\d+/i);
print "fluxbb \n"
# if($data =~ /viewtopic\.php\?id=\d+/i ose
nëse ($data =~ /]+href="http:\/\/(?:www\.)fluxbb\.org\/?"[^>]*>FluxBB/i) ;
print "exbb \n"
nëse ($data =~ /]+href="[^"]*http:\/\/(?:www\.)?exbb\.org\/?"[^>]*>ExBB/i) ; # ose
# $data =~ /forums\.php\?[^""]*forum=\d+/i);
print "yabb \n"
nëse ($data =~ /]+href="[^"]*http:\/\/(?:www\.)?yabbforum\.com\/?"[^>]*>YaBB/i ose
$data =~ /YaBB\.pl\?[^""]*num=\d+/i ) ;
print "dleforum \n"
nëse ($data =~ /\(Mundësuar nga Forumi DLE\)<\/title>/i ose
$data =~ /]+href="[^"]+(?:http:\/\/(?:www\.)?dle\-files\.ru|act=copyright)[^"]*">Forumi DLE<\/a>/i) ;
print "iconboard \n"
nëse ($data =~ /]+href="[^"]*http:\/\/(?:www\.)?ikonboard\.com\/?[^"]*"[^>]*>Ikonboard/i ose
$data =~ /\n"
nëse ($data =~ /\n"
# if($data =~ /forums\.php\?fid=\d+/i ose
# $data =~ /topic\.php\?fid=\d+/i ose
nëse ($data =~ /]+href="http:\/\/(?:www\.)?flashbb\.net\/?"[^>]*>FlashBB/i) ;
print "stokesit \n"
# if($data =~ /forum\.php\?f=\d+/i ose
nëse ($data =~ /]+href="http:\/\/(?:www\.)?stokesit\.com\.au\/?"[^>]*>[^\/]*Stokes IT/i) ;
print "podium \n"
# if($data =~ /topic\.php\?t=\d+/i ose
nëse ($data =~ /]+href=[""]?http:\/\/(?:www\.)?sopebox\.com\/?[""]?[^>]*>Podium/i) ;
print "usebb \n"
# if($data =~ /forum\.php\?id=\d+/i ose
nëse ($data =~ /]+href="http:\/\/(?:www\.)?usebb\.net\/?"[^>]*>UseBB/i) ;
print "wrforum \n"
# if($data =~ /index\.php\?fid=\d+/i ose
nëse ($data =~ /]+href="http:\/\/(?:www\.)?wr\-script\.ru\/?"[^>]*>WR\-Forum/i) ;
print "yetanotherforumnet \n"
nëse ($data =~ /Edhe një Forum tjetër\.net/i ose
$data =~ /default\.aspx\?g=posts&t=\d+/i) ;

Ky dhe skriptet e tjera të përmendura në postim mund të gjenden në këtë arkiv.

Script cili-forum.pl shqyrton kodin e faqes html për praninë e nënshkrimeve të motorit të forumit në të. Ne përdorëm një teknikë të ngjashme kur përcaktuam WordPress dhe Joomla, por ka disa dallime. Së pari, vetë skripti nuk ngarkon kodin e faqes, por e lexon atë nga stdin ose një skedar i kaluar si argument. Kjo na lejon të shkarkojmë faqen një herë, për shembull, duke përdorur wget, dhe pastaj ta ekzekutojmë atë përmes disa analizuesve, nëse kemi më shumë se një. Së dyti, në këtë skenar, prania e një nënshkrimi është një shenjë 100% e motorit. Herën e fundit, prania e nënshkrimit i dha peshë vetëm motorit përkatës dhe “fitoi” motorin me peshën më të madhe. Vendosa që në këtë rast, një qasje e tillë vetëm do ta ndërlikonte në mënyrë të panevojshme kodin.

Për të testuar skenarin, bëra një kërkim të vogël. Unë përpilova një listë me disa mijëra forume dhe kalova secilën prej tyre përmes skenarit tim, duke përcaktuar kështu përqindjen e aktivizimeve të programit dhe popullaritetin e motorëve të ndryshëm.

Për të marrë listën e forumeve, përdora analizuesin tim Google. motor kërkimi dërgoni kërkesa si

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

dhe kështu me radhë. Kodi i plotë gjeneratorin e pyetjeve do ta gjeni në skedar gen-forumsearch-urls.pl. Përveç zonës .ru, u përdorën gjithashtu .su .ua .kz dhe .by. Ishte e vështirë për të kryer një studim të tillë herën e fundit, pasi faqet WordPress dhe Joomla nuk kanë nënshkrime të tilla në URL. Katalogët si cmsmagazine.ru/catalogue/ nuk ofrojnë një madhësi të mjaftueshme kampioni. Çfarë janë 600 sajte në Drupal?

Më duhet të pranoj se rezultatet e eksperimentit më zhgënjyen. Nga 12,590 vendet e studiuara, vetëm 7,083 motorë u identifikuan me sukses, domethënë vetëm në 56% të rasteve. Ndoshta nuk kam marrë parasysh ndonjë motor? A qëndroi Bitrix në gjysmën e forumeve? Apo duhet të kisha kaluar më shumë kohë duke kërkuar nënshkrime? Në përgjithësi, këtu nevojiten më shumë kërkime.

Ndër 56% të motorëve të identifikuar me sukses, IPB (31%), phpBB (26.6%) dhe vBulletin (26.5%) ishin më të njohurit, siç pritej.

Ato ndiqen nga afër nga SMF (5.8%) dhe DLEForum (5.3%). PunBB-ja ime e preferuar ishte vetëm në vendin e 6-të (1.64%). Unë nuk do të këshilloja t'u besoja shumë këtyre shifrave (ata thonë se çdo forum i tretë në Runet funksionon në IPB), por sigurisht që mund të nxirren përfundime të caktuara.

Për shembull, nëse keni ndërmend të krijoni një faqe në një motor forumi dhe planifikoni të modifikoni forumin, të themi, t'i paguani përdoruesit 0,01 $ për çdo mesazh me tërheqje automatike të fondeve një herë në javë, atëherë duhet të zgjidhni një nga tre motorët më të njohur. . Sa më i popullarizuar të jetë forumi, aq më shumë ka të ngjarë të gjesh një programues që e di mirë atë.

Nëse nuk priten ndryshime të rëndësishme në motor, atëherë mund të ketë kuptim të zgjidhni një motor më pak të njohur, si SMF ose punBB. Duke bërë këtë, ju do të zvogëloni numrin e sulmeve të hakerëve në forumin tuaj dhe sasinë e mesazheve të padëshiruara që dërgohen automatikisht në të.

Skriptet për kërkimin/përcaktimin e forumeve mund të gjejnë gjithashtu më shumë se një përdorim praktik. Gjëja e parë që më erdhi në mendje personalisht ishte të renditja forumet e identifikuara sipas TCI dhe të vendosja postime me lidhje në një nga faqet e tyre në njëqindën e parë. Sidoqoftë, njëqind lidhje dofollow të forumit nuk ndikuan në asnjë mënyrë TIC (2 përditësime kanë kaluar), kështu që është më mirë të mos humbni kohë këtu nëse nuk jeni të interesuar për tranzicione.

Është e qartë se përdorimi i emërtuar i skripteve është larg nga i vetmi. Unë mendoj se ju mund të kuptoni lehtësisht se si mund t'i përdorni ato ndryshe.

Disa module duhet të komunikojnë me harduerin për të përmbushur detyrat e tyre. Këto module vijnë me një shtresë shtesë drejtuese. Më pas, secili drejtues ka nevojë për një skedar bordi për të folur me harduerin aktual.
Skedari i tabelës duhet të sigurohet nga përdoruesi pasi zbatimi i tij varet jo vetëm nga sistemi themelor i përdorur (HAL), por edhe nga konfigurimi aktual i harduerit (instalimet elektrike).

Modelet

Secili drejtues ofron një shabllon të skedarit të tabelës së tij. Kopjimi i këtij skedari në drejtorinë e projektit tuaj dhe zbatimi i rutinave është gjithçka që duhet bërë. Vini re se duhet të hiqni pjesën _template nga emri i skedarit.

Bordet e mbështetura

Disa borde kanë pajisje të paracaktuara mbi to. Aty ku ato janë një tabelë e zakonshme, ne ofrojmë një skedar make-file ( /boards/base/xxx/board.mk) të cilat mund t'i përfshini në skedarin tuaj të projektit. Kjo më pas do të përfshijë automatikisht të gjithë drejtuesit standardë të harduerit dhe skedarët e bordit. Skedarë shtesë të paracaktuar të bordit mund të gjenden gjithashtu në /bordet/shtesat.


Skedari index.php është skedari kryesor i forumit dhe përdoret pothuajse në të gjitha veprimet. Puna e tij përbëhet nga hapat e mëposhtëm:
1) Lidhja skedarët e konfigurimit database.php dhe iboard.php.
2) Krijimi i një lidhjeje me DBMS dhe fitimi i aksesit në bazën e të dhënave.
3) Leximi i informacionit nga kukit e përdoruesit ose nga parametrat e kaluar në skript, nxjerrja e informacionit për këtë përdorues nga baza e të dhënave dhe verifikimi i origjinalitetit të tij.
4) Në rast verifikimi të pasuksesshëm (ose mungesë informacioni për përdoruesin), të dhënat për profilin e përdoruesit Vizitor merren si të dhëna të përdoruesit ( numrin e regjistrimit - 1).
5) Lidhja e skedarëve të stilit dhe gjuhës së ndërfaqes, Perdorues i percaktuar në cilësimet e profilit tuaj.
6) Nëse parametri t është i pranishëm në parametrat e thirrjes së skriptit, atëherë të dhënat për temën dhe forumin e specifikuar merren nga baza e të dhënave, në të cilën Kjo temë e vendosur.
7) Nëse parametri f është i pranishëm në parametrat e thirrjes së skriptit, atëherë të dhënat për forumin merren nga baza e të dhënave.
8) Nëse parametrat t ose f janë të pranishëm, bëhet një kontroll për të parë nëse përdoruesi ka të drejta të mjaftueshme për të parë forumin përkatës.
9) Moduli i specifikuar në parametrin m është duke u lidhur. Nëse parametri m mungon, atëherë lloji i modulit përcaktohet në varësi të llojit të ndarjes për të cilën këtë veprim. Nëse lloji i ndarjes nuk është specifikuar, atëherë bëhet një kontroll për të përcaktuar se çfarë duhet të shfaqet faqja kryesore. Në rast se një nga seksionet zgjidhet si faqja kryesore, atëherë moduli përgjegjës për shfaqjen e seksionit të llojit përkatës do të lidhet, përndryshe - moduli main.php. Përfshihet gjithashtu një skedar stili, i cili ka të njëjtin emër si shtojca, por ndodhet në një nëndrejtori të drejtorisë së stileve që korrespondon me stilin e zgjedhur në cilësimet e profilit të përdoruesit.
10) Parametri a është i kontrolluar. Nëse nuk është vendosur në mënyrë eksplicite, ai deklarohet i barabartë me shikimin. Më tej, nëse specifikohet një seksion specifik dhe parametri a është i barabartë me pamjen, ai zëvendësohet me<имя_раздела>_pamje.
11) Në varësi të veprimit të kërkuar (është specifikuar në parametrin e thirrjes së skriptit a), ose skedari tmplate1.php (nëse veprimi nuk përmban prefiksin do_) ose skedari tmplate2.php (ndryshe) është i lidhur. Më pas, thirren të gjitha veprimet e listuara në shabllonin përkatës dhe në vend të veprimit kryesor_aksioni, në të vërtetë do të thirret veprimi i specifikuar në parametrin a.
12) Regjistri i forumit përmban informacione për veprimin e kryer, identifikuesin dhe adresën IP të përdoruesit që ka kryer veprimin.
Gjithashtu në skedarin index.php ekziston një funksion për trajtimin e gabimeve fatale, i cili është krijuar për të shfaqur një mesazh gabimi, si dhe për të rregulluar tekstin e gabimit në skedarin error.log.

Po ngarkohet...
Top