Ինդեքս php տախտակի ֆայլ: Ֆորումի շարժիչի ավտոմատ հայտնաբերում

Տուն / Խափանումներ

Որոշ մոդուլներ պետք է հաղորդակցվեն սարքաշարի հետ՝ իրենց առաջադրանքները կատարելու համար: Այդ մոդուլները գալիս են լրացուցիչ վարորդական շերտով: Այնուհետև յուրաքանչյուր վարորդի կարիք ունի տախտակի ֆայլ՝ իրական սարքավորման հետ խոսելու համար:
Տախտակի ֆայլը պետք է տրամադրվի օգտագործողի կողմից, քանի որ դրա իրականացումը կախված է ոչ միայն օգտագործված հիմքում ընկած համակարգից (HAL), այլև ապարատային իրական կազմաձևից (լարեր):

Կաղապարներ

Յուրաքանչյուր դրայվեր տրամադրում է իր տախտակի ֆայլի ձևանմուշը: Այս ֆայլը ձեր նախագծի գրացուցակում պատճենելը և առօրյան իրականացնելն այն ամենն է, ինչ պետք է անել: Նկատի ունեցեք, որ դուք պետք է հեռացնեք _template մասը ֆայլի անունից:

Աջակցվող տախտակներ

Որոշ տախտակներ իրենց վրա նախապես սահմանված սարքավորում ունեն: Այնտեղ, որտեղ դրանք ընդհանուր տախտակ են, մենք տրամադրում ենք makefile ( /boards/base/xxx/board.mk), որը կարող եք ներառել ձեր սեփական նախագծի ֆայլում: Սա այնուհետև ավտոմատ կերպով կներառի բոլոր ստանդարտ սարքաշարի դրայվերները և տախտակի ֆայլերը: Լրացուցիչ նախապես սահմանված տախտակի ֆայլերը կարելի է գտնել նաև այստեղ /տախտակներ/հավելումներ.

Եկեք անմիջապես սկսենք հիմնական սցենարի կոդը.

#!/usr/bin/perl

# which-forum.pl սցենար
# (գ) 2010 Ալեքսանդր Ա Ալեքսեև, http://site/

օգտագործել խիստ;

# մեկնաբանված տողեր՝ խստության համար
# եթե խնդիրը շարժիչի վիճակագրություն հավաքելն է, թողեք այնպես, ինչպես կա
# եթե ֆորումների ցուցակ եք կազմում, ապա մեկնաբանեք

իմ $տվյալները;
$data .= $_while (<> ) ;

# ստուգեք, թե որքան է սնուցվել phpBB-ի կողմից՝ առանց ստորագրի հղումի
տպել «phpbb \n"
եթե ($data =~ /]+href="[^"]*http:\/\/(?:www\.)?phpbb\.com\/?"[^>]*>phpBB/iկամ
# $data =~ /viewforum\.php\?[^""]*f=\d+/i կամ
$data =~ /phpBB\-SEO/i կամ
$տվյալներ =~ /) ;
տպել «ipb \n"
եթե ($data =~ /]+href="[^"]*http:\/\/(?:www\.)?invision(?:board|power)\.com\/?[^"]*"[^>]*> [^<]*IP\.Board/i կամ
$տվյալներ =~ /]+href="[^"]*http:\/\/(?:www\.)?invisionboard\.com\/?"[^>]*>Invision Power Board/iկամ
$տվյալներ =~ /

/iկամ
$տվյալներ =~ /index\.php\?[^""]*showforum=\d+/i) ;
տպել «vbulletin \n"
եթե ($data =~ /Թողարկվում է:?[^<]+vBulletin[^<]+(?:Version)?/i կամ
$տվյալներ =~ /) ;
տպել «smf \n"
եթե ($data =~ /]+href="[^"]*http:\/\/(?:www\.)?simplemachines\.org\/?"[^>]*>Սնուցվում է SMF/i-ովկամ
$տվյալներ =~ /index\.php\?[^""]*board=\d+\.0/i) ;
տպել «punbb \n"
եթե ($data =~ /]+href="[^"]*http:\/\/(?:(?:www\.)?punbb\.org|punbb\.informer\.com)\/?"[^>]*> PunBB/i) ;
#կամ
# $data =~ /viewforum\.php\?[^""]*id=\d+/i); \n"
տպել «fluxbb
# if($data =~ /viewtopic\.php\?id=\d+/i կամ /եթե ($տվյալներ =~) ;
]+href="http:\/\/(?:www\.)fluxbb\.org\/?"[^>]*>FluxBB/i \n"
եթե ($data =~ /տպել «exbb]+href="[^"]*http:\/\/(?:www\.)?exbb\.org\/?"[^>]*>ExBB/i
# $data =~ /forums\.php\?[^""]*forum=\d+/i);
տպել «յաբբ \n"
եթե ($data =~ /]+href="[^"]*http:\/\/(?:www\.)?yabbforum\.com\/?"[^>]*>YaBB/iկամ
$data =~ /YaBB\.pl\?[^""]*num=\d+/i ) ;
տպել «dleforum \n"
եթե ($data =~ /\(Սահմանվում է DLE ֆորումի կողմից\)<\/title>/iկամ
$տվյալներ =~ /]+href="[^"]+(?:http:\/\/(?:www\.)?dle\-files\.ru|act=copyright)[^"]*">DLE ֆորում<\/a>/i) ;
տպել «ikonboard \n"
եթե ($data =~ /]+href="[^"]*http:\/\/(?:www\.)?ikonboard\.com\/?[^"]*"[^>]*>Ikonboard/iկամ
$տվյալներ =~ /
եթե ($data =~ /]*>ExBB/i
# $data =~ /topic\.php\?id=\d+/i կամ
# $data =~ /forum\.php\?id=\d+/i);
տպել «flashbb \n"
# if($data =~ /forums\.php\?fid=\d+/i կամ
# $data =~ /topic\.php\?fid=\d+/i կամ
եթե ($data =~ /]+href="http:\/\/(?:www\.)?flashbb\.net\/?"[^>]*>FlashBB/i) ;
տպել «stokesit \n"
# if($data =~ /forum\.php\?f=\d+/i կամ
եթե ($data =~ /]+href="http:\/\/(?:www\.)?stokesit\.com\.au\/?"[^>]*>[^\/]*Stokes IT/i) ;
տպել «ամբիոն \n"
# if($data =~ /topic\.php\?t=\d+/i կամ
եթե ($data =~ /]+href=[""]?http:\/\/(?:www\.)?sopebox\.com\/?[""]?[^>]*>Պոդիում/i) ;
տպել «usebb \n"
# if($data =~ /forum\.php\?id=\d+/i կամ
եթե ($data =~ /]+href="http:\/\/(?:www\.)?usebb\.net\/?"[^>]*>UseBB/i) ;
տպել «wrforum \n"
# if($data =~ /index\.php\?fid=\d+/i կամ
եթե ($data =~ /]+href="http:\/\/(?:www\.)?wr\-script\.ru\/?"[^>]*>WR\-Forum/i) ;
տպել «yetanotherforumnet \n"
եթե ($data =~ /Եվս մեկ ֆորում\.net/i կամ
$տվյալներ =~ /default\.aspx\?g=posts&t=\d+/i) ;

Այս և գրառման մեջ նշված այլ սցենարներ կգտնեք այս արխիվում:

Սցենար which-forum.plուսումնասիրում է HTML էջի կոդը՝ տեսնելու, թե արդյոք այն պարունակում է ֆորումի շարժիչի ստորագրություններ: Մենք նմանատիպ տեխնիկա օգտագործեցինք WordPress-ը և Joomla-ն սահմանելիս, բայց կան մի քանի տարբերություններ. Նախ, սկրիպտն ինքնին չի բեռնում էջի կոդը, այլ կարդում է այն stdin-ից կամ որպես արգումենտ փոխանցված ֆայլից։ Սա թույլ է տալիս մեկ անգամ ներբեռնել էջը, օրինակ՝ օգտագործելով wget-ը, այնուհետև այն գործարկել մի քանի անալիզատորների միջոցով, եթե մենք ունենք մեկից ավելի: Երկրորդ, այս սցենարում ստորագրության առկայությունը 100%-ով շարժիչի նշան է։ Նախորդ անգամ ստորագրության առկայությունը միայն կշիռ է ավելացրել համապատասխան շարժիչին, իսկ ամենամեծ քաշ ունեցող շարժիչը «հաղթել է»: Ես որոշեցի, որ ներս այս դեպքումԱյս մոտեցումը միայն անհարկի կբարդացնի կոդը:

Սցենարը փորձարկելու համար ես որոշ ուսումնասիրություններ կատարեցի: Ես կազմեցի մի քանի հազար ֆորումների ցուցակ և դրանցից յուրաքանչյուրը անցկացրեցի իմ սցենարով, դրանով իսկ որոշելով ծրագրի պատասխանների տոկոսը և տարբեր շարժիչների ժողովրդականությունը:

Ֆորումների ցանկը ստանալու համար ես օգտագործեցի իմ Google վերլուծիչը: Որոնման համակարգնման հարցումներ

կայք:forum.*.ru
կայք:talk.*.ru
կայք:board.*.ru
կայք:smf.*.ru
կայք՝ phpbb.*.ru
....

եւ այլն։ Դուք կգտնեք հարցման գեներատորի ամբողջական կոդը ֆայլում gen-forumsearch-urls.pl. Բացի zone.ru-ից, օգտագործվել են նաև .su .ua .kz և .by: Անցյալ անգամ դժվար էր նման հետազոտություն անցկացնել, քանի որ WordPress և Joomla կայքերը URL-ում նման ստորագրություններ չունեն։ Այնպիսի կատալոգները, ինչպիսին է cmsmagazine.ru/catalogue/-ն, չեն ապահովում նմուշի բավարար չափը: Ի՞նչ է 600 Drupal կայքը:

Պետք է խոստովանեմ, որ փորձի արդյունքներն ինձ հիասթափեցրել են։ Ուսումնասիրված 12590 կայքերից շարժիչը հաջողությամբ հայտնաբերվել է միայն 7083-ի վրա, այսինքն՝ միայն դեպքերի 56%-ում: Միգուցե ինչ-որ շարժիչ հաշվի չեմ առել։ Իսկապե՞ս ճիշտ էր, որ ֆորումների կեսում տեղադրվել էր Bitrix-ը: Թե՞ պետք է ավելի շատ ժամանակ ծախսեի ստորագրություններ փնտրելու համար։ Ընդհանրապես, այստեղ լրացուցիչ հետազոտություն է պահանջվում։

Հաջողությամբ նույնականացված շարժիչների 56%-ի մեջ ամենահայտնին, ինչպես և կարելի էր ակնկալել, եղել են IPB (31%), phpBB (26.6%) և vBulletin (26.5%):

Նրանց մեծ ուշացումով հաջորդում են SMF-ը (5,8%) և DLEForum-ը (5,3%): Իմ սիրելի punBB-ն ընդամենը 6-րդ տեղում էր (1,64%): Ես խորհուրդ չեմ տա շատ հավատալ այս թվերին (նրանք ասում են, որ RuNet-ի յուրաքանչյուր երրորդ ֆորումն աշխատում է IPB-ով), բայց, իհարկե, կարելի է որոշակի եզրակացություններ անել:

Օրինակ, եթե դուք մտադիր եք կայք ստեղծել ֆորումի շարժիչով և նախատեսում եք փոփոխել ֆորումը, ասենք, օգտատերերին վճարեք 0,01 դոլար յուրաքանչյուր հաղորդագրության համար՝ գումարների ավտոմատ դուրսբերմամբ շաբաթը մեկ անգամ, ապա պետք է ընտրեք երեք ամենահայտնի շարժիչներից մեկը: Որքան մեծ ժողովրդականություն է վայելում ֆորումը, այնքան մեծ է դրանում լավ իմացող ծրագրավորող գտնելու հնարավորությունները:

Եթե ​​շարժիչում էական փոփոխություններ չեն սպասվում, ապա կարող է իմաստ ունենալ ընտրել ոչ այնքան հայտնի շարժիչ, օրինակ՝ SMF կամ punBB: Սա կնվազեցնի թիվը հաքերային հարձակումներձեր ֆորումին և դրա վրա ավտոմատ կերպով ուղարկվող սպամի քանակին:

Ֆորումների որոնման/նույնականացման սցենարները կարող են նաև գտնել բազմաթիվ գործնական կիրառություններ: Առաջին բանը, որ մտքովս անցավ, հայտնաբերված ֆորումները դասավորելն էր ըստ TIC-ի և առաջին հարյուր հաղորդագրությունների վրա տեղադրել իմ կայքերից մեկի հղումներով: Այնուամենայնիվ, հարյուրավոր ֆորումի dofollow հղումները ոչ մի կերպ չեն ազդել TCI-ի վրա (2 թարմացում է անցել), ուստի ավելի լավ է ժամանակ չկորցնել այստեղ, քանի դեռ ձեզ չեն հետաքրքրում անցումները։

Հասկանալի է, որ սկրիպտների նշված օգտագործումը հեռու է միակից։ Կարծում եմ, դուք հեշտությամբ կարող եք պարզել, թե ինչպես կարող եք դրանք օգտագործել:


index.php ֆայլը ֆորումի հիմնական ֆայլն է և օգտագործվում է գրեթե բոլոր գործողությունների համար: Նրա աշխատանքը բաղկացած է հետևյալ փուլերից.
1) Database.php և iboard.php կազմաձևման ֆայլերի միացում:
2) DBMS-ի հետ կապի հաստատում և տվյալների բազայի հասանելիություն.
3) Օգտագործողի թխուկներից կամ սկրիպտին փոխանցված պարամետրերից տեղեկատվության ընթերցում, տվյալների բազայից այս օգտատիրոջ մասին տեղեկատվության դուրսբերում և նրա իսկության ստուգում:
4) Եթե ստուգումն անհաջող է (կամ օգտատիրոջ մասին տեղեկություններ չկան), ապա Հյուր օգտատիրոջ պրոֆիլի տվյալները (գրանցման համարը՝ 1) վերցվում են որպես օգտվողի տվյալներ։
5) Ինտերֆեյսի ոճը և օգտատիրոջ կողմից իր պրոֆիլի կարգավորումներում սահմանված լեզվի ֆայլերը միացված են:
6) Եթե t պարամետրը առկա է սցենարի կանչի պարամետրերում, ապա տվյալներ նշված թեմայի և ֆորումի մասին, որոնցում այս թեմանգտնվում է.
7) Եթե f պարամետրը առկա է սցենարի կանչի պարամետրերում, ապա ֆորումի մասին տվյալները հանվում են տվյալների բազայից:
8) Եթե առկա են t կամ f պարամետրերը, ստուգում կկատարվի՝ պարզելու, թե արդյոք օգտվողը բավարար իրավունքներ ունի համապատասխան ֆորումը դիտելու համար:
9) m պարամետրում նշված մոդուլը միացված է. Եթե ​​m պարամետրը բացակայում է, ապա մոդուլի տեսակը որոշվում է կախված բաժանման տեսակից, որի համար այս գործողությունը. Եթե ​​հատվածի տեսակը նշված չէ, ապա ստուգում է կատարվում՝ որոշելու, թե ինչ պետք է ցուցադրվի որպես գլխավոր էջ. Եթե ​​բաժիններից մեկն ընտրվի որպես հիմնական էջ, ապա համապատասխան տիպի հատվածը ցուցադրելու համար պատասխանատու մոդուլը կմիանա՝ հակառակ դեպքում- մոդուլ main.php. Ներառված է նաև ոճային ֆայլ, որն ունի նույն անունը, ինչ plug-in-ը, բայց գտնվում է ոճերի գրացուցակի ենթագրքում, որը համապատասխանում է օգտվողի պրոֆիլի կարգավորումներում ընտրված ոճին:
10) ա պարամետրը ստուգված է. Եթե ​​հստակ նշված չէ, ապա այն հայտարարվում է դիտմանը հավասար: Հաջորդը, եթե նշված է որոշակի բաժին, և պարամետրը դիտվում է, այն փոխարինվում է<имя_раздела>_դիտել.
11)Կախված պահանջվող գործողությունից (այն նշված է script call պարամետրում a), կամ tmplate1.php ֆայլը միացված է (եթե գործողությունը չի պարունակում do_ նախածանցը), կամ tmplate2.php ֆայլը (հակառակ դեպքում): Այնուհետև կանչվում են համապատասխան ձևանմուշում թվարկված բոլոր գործողությունները, և main_action գործողության փոխարեն իրականում կկանչվի a պարամետրում նշված գործողությունը։
12)Ֆորումի մատյանը պարունակում է տեղեկատվություն կատարված գործողության, գործողությունն իրականացրած օգտատիրոջ նույնացուցիչի և IP հասցեի մասին:
Նաև index.php ֆայլում կա ճակատագրական սխալների հետ աշխատելու գործառույթ, որը նախատեսված է սխալի հաղորդագրություն ցուցադրելու, ինչպես նաև error.log ֆայլում սխալի տեքստը գրանցելու համար:

© 2024 ermake.ru -- Համակարգչի վերանորոգման մասին - Տեղեկատվական պորտալ