فایل برد php ایندکس. تشخیص خودکار موتور انجمن

صفحه اصلی / خرابی ها

برخی از ماژول ها برای تکمیل وظایف خود باید با سخت افزار ارتباط برقرار کنند. این ماژول ها با یک لایه درایور اضافی همراه هستند. سپس هر راننده به یک فایل برد نیاز دارد تا با سخت افزار واقعی صحبت کند.
فایل برد باید توسط کاربر ارائه شود زیرا اجرای آن نه تنها به سیستم زیربنایی مورد استفاده (HAL)، بلکه به پیکربندی سخت افزار واقعی (سیم کشی) نیز بستگی دارد.

قالب ها

هر درایور یک قالب از فایل برد خود را ارائه می دهد. کپی کردن این فایل در فهرست پروژه و پیاده سازی روتین ها تنها کاری است که باید انجام دهید. توجه داشته باشید که باید قسمت _template را از نام فایل حذف کنید.

هیئت های پشتیبانی شده

برخی از بردها سخت افزار از پیش تعریف شده روی خود دارند. جایی که آنها یک تابلوی مشترک هستند، ما یک فایل ایجاد می کنیم ( /boards/base/xxx/board.mk) که می توانید آن را در فایل ساخت پروژه خود قرار دهید. سپس به طور خودکار شامل تمام درایورهای سخت افزار استاندارد و فایل های برد می شود. فایل‌های تخته از پیش تعریف‌شده اضافی را نیز می‌توان در این قسمت یافت /boards/addons.

بیایید بلافاصله با کد اسکریپت اصلی شروع کنیم:

#!/usr/bin/perl

اسکریپت # which-forum.pl
# (c) 2010 Alexandr A Alexeev, 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 یا
$data =~ /) ;
چاپ "ipb \n"
اگر ($data =~ /]+href="[^"]*http:\/\/(?:www\.)?invision(?:board|power)\.com\/?[^"]*"[^>]*> [^<]*IP\.Board/i یا
$data =~ /]+href="[^"]*http:\/\/(?:www\.)?invisionboard\.com\/?"[^>]*>Invision Power Board/iیا
$data =~ /

/iیا
$data =~ /index\.php\?[^""]*showforum=\d+/i) ;
چاپ "vbulletin \n"
اگر ($data =~ /طراحی شده توسط:؟[^<]+vBulletin[^<]+(?:Version)?/i یا
$data =~ /) ;
چاپ "smf \n"
اگر ($data =~ /]+href="[^"]*http:\/\/(?:www\.)?simplemachines\.org\/?"[^>]*>طراحی شده توسط SMF/iیا
$data =~ /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 یا /اگر ($data =~) ;
]+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یا
$data =~ /]+href="[^"]+(?:http:\/\/(?:www\.)?dle\-files\.ru|act=copyright)[^"]*"> انجمن DLE<\/a>/i) ;
چاپ "ikonboard \n"
اگر ($data =~ /]+href="[^"]*http:\/\/(?:www\.)?ikonboard\.com\/?[^"]*"[^>]*>Ikonboard/iیا
$data =~ /\n"
اگر ($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\/?[""]?[^>]*>Podium/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 =~ /Yet Another Forum\.net/i یا
$data =~ /default\.aspx\?g=posts&t=\d+/i) ;

این و سایر اسکریپت های ذکر شده در پست را در این آرشیو خواهید یافت.

اسکریپت which-forum.plکد صفحه HTML را بررسی می کند تا ببیند آیا دارای امضاهای موتور انجمن است یا خیر. ما هنگام تعریف وردپرس و جوملا از تکنیک مشابهی استفاده کردیم، اما چند تفاوت وجود دارد. اولاً، خود اسکریپت کد صفحه را بارگذاری نمی کند، بلکه آن را از stdin یا فایلی که به عنوان آرگومان ارسال می شود، می خواند. این به شما این امکان را می دهد که یک بار مثلاً با استفاده از wget صفحه را دانلود کنید و اگر بیش از یک آنالایزر داریم آن را از طریق چندین آنالایزر اجرا کنید. ثانیاً در این اسکریپت وجود امضا 100% نشانه موتور است. آخرین بار، وجود یک امضا فقط به موتور مربوطه وزن اضافه کرد و موتور با بیشترین وزن "برنده" شد. من تصمیم گرفتم که در در این مورداین رویکرد فقط کد را به طور غیر ضروری پیچیده می کند.

برای تست فیلمنامه، کمی تحقیق کردم. من فهرستی از چندین هزار فروم را گردآوری کردم و هر یک از آنها را از طریق اسکریپت خود اجرا کردم و بدین ترتیب درصد پاسخ های برنامه و محبوبیت موتورهای مختلف را تعیین کردم.

برای دریافت لیست انجمن ها، از تجزیه کننده گوگل خود استفاده کردم. موتور جستجودرخواست هایی مانند

سایت:forum.*.ru
سایت:talk.*.ru
سایت:board.*.ru
سایت: smf.*.ru
سایت: phpbb.*.ru
....

و غیره کد کامل ایجاد کننده پرس و جو را در فایل خواهید یافت gen-forumsearch-urls.pl. علاوه بر zone.ru، .su .ua .kz و .by نیز استفاده شد. دفعه قبل، انجام چنین مطالعه ای دشوار بود، زیرا سایت های وردپرس و جوملا چنین امضایی در URL ندارند. کاتالوگ هایی مانند cmsmagazine.ru/catalogue/ حجم نمونه کافی را ارائه نمی دهند. 600 سایت دروپال چیست؟

باید اعتراف کنم، نتایج آزمایش من را ناامید کرد. از 12590 سایت مورد مطالعه، موتور تنها در 7083 با موفقیت شناسایی شد، یعنی فقط در 56٪ موارد. شاید من مقداری موتور را در نظر نگرفتم؟ آیا واقعاً درست بود که نیمی از انجمن ها Bitrix را نصب کرده بودند؟ یا باید زمان بیشتری را صرف جستجوی امضا می کردم؟ به طور کلی، در اینجا به تحقیقات بیشتری نیاز است.

در بین 56 درصد موتورهایی که با موفقیت شناسایی شده اند، همانطور که انتظار می رود، محبوب ترین ها IPB (31٪)، phpBB (26.6٪) و vBulletin (26.5٪) بودند.

SMF (5.8٪) و DLEForum (5.3٪) با تاخیر زیادی دنبال می شوند. punBB مورد علاقه من فقط در مکان ششم (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. یک فایل سبک نیز گنجانده شده است که همان نام افزونه است، اما در زیر شاخه ای از فهرست سبک ها مطابق با سبک انتخاب شده در تنظیمات نمایه کاربر قرار دارد.
10) پارامتر a بررسی شده است. اگر به صراحت مشخص نشده باشد، برابر با view اعلام می شود. در مرحله بعد، اگر بخش خاصی مشخص شده باشد و پارامتر a view باشد، با آن جایگزین می شود<имя_раздела>_مشاهده
11) بسته به عمل درخواستی (در پارامتر فراخوانی اسکریپت a نشان داده شده است)، یا فایل tmplate1.php متصل است (اگر اکشن حاوی پیشوند do_ نباشد) یا فایل tmplate2.php (در غیر این صورت). در مرحله بعد، تمام اکشن های فهرست شده در قالب مربوطه فراخوانی می شوند و به جای اکشن main_action، عمل مشخص شده در پارامتر a در واقع فراخوانی می شود.
12) گزارش انجمن حاوی اطلاعاتی در مورد عملکرد انجام شده، شناسه و آدرس IP کاربری که اقدام را انجام داده است.
همچنین در فایل index.php تابعی برای رسیدگی به خطاهای مرگبار وجود دارد که برای نمایش پیغام خطا و همچنین ثبت متن خطا در فایل error.log طراحی شده است.

© 2024 ermake.ru -- درباره تعمیر رایانه شخصی - پورتال اطلاعاتی