منتخب بازارچه

راهنمای نصب SecurityCode برای نظرات و مبارزه با Spam

ehsan

Administrator
مرجع اصلی این مطلب اینجاست:
http://james.seng.cc/archives/000145.html
و خلاصه کلیه حقوق این اسکریپت مال نویسنده اش است.
نمونه اون هم میتونید توی وبلاگ خودش و در قسمت Comment ها ببینید:
http://james.seng.cc/

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

فایل ها رو از اینجا دریافت کنید. البته بهتره لینک مرجع اصلی رو چک کنید شاید نسخه جدیدی ارائه شده باشه. این راهنما رو برای نسخه 0.1c دارم مینویسم.

قبلا از فایلهایی که ویرایش میکنید برای اطمینان BackUp بگیرید. Permission کلیه فایلهایی که Upload میکنید باید 755 شود.

نحوه نصب اون برای MT 2.x و MT 3.x تقریبا متفاوت است که هر کدوم جداگونه توضیح داده خواهد شد.


نصب برای MT 2.x

1. لازم است که GD.pm روی سرور نصب باشد. این یک Extension Library برای Perl است که بر روی سرورهای پرشین تولز نصب است.

2. یک دایرکتوری به عنوان cache برای این پلاگین باید ساخته بشه تا کدهایی که نمایش می دهد به طور موقتی Save کند. بهتره که این دایرکتوری بیرون از public_html باشد تا دسترسی روی وب به آن ممکن نباشد.
Permission این دایرکتوری باید 755 یا 775 یا 777 باشد تا قابلیت Write داشته باشد.
بعد از ساختن این دایرکتوری (به هر نامی که میخواهید) لازم است فایل SCode.pm را که همراه مجموعه دانلود کرده این باز کرده و نام این دایرکتوری را در ابتدای فایل اصلاح کنید:
کد:
 my $tmpdir = "/tmp/";
برای مثال اگر نام دایرکتوری را scodes گذاشته اید به صورت زیر خواهد شد: (منظور از username) نام user شما در cPanel است و اگر از cPanel استفاده نمیکنید باید آدرس کامل فایل روی سرور را بدهید:
کد:
 my $tmpdir = "/home/username/scode/";
همچنین در این فایل تعداد رقمهای این کد را مشخص کنید:
کد:
my $scode_length = 6;
پیش فرض 6 رقمی است.
فایل را پس از اتمام تغییرات ذخیره کنید

3. فایل SCode.pm را در شاخه /lib/MT آپلود کنید.

4. فایل mt-scode.cgi را کنار بقیه فایلهای مووبل تایپ در شاخه اصلی آن آپلود کنید. (کنار فایل mt.cgi)

5. فایل scode.pl را در شاخه plugins آپلود کنید. اگر این شاخه را ندارید در کنار mt.cgi (شاخه اصلی مووبل تایپ) بسازید

6.فایل Comments.pm را که در lib/MT/App قرار دارد باز کنید و تغییرات زیر را وارد کنید.
این سه خط را پیدا کنید:
کد:
	if (!$q->param('text')) {
		return $app->handle_error($app->translate("Comment text is required."));
	}
در انتهای آن و در یک خط جدید کدهای زیر را اضافه کنید:
کد:
	# SecurityCode hack start
	#
	require MT::SCode;
	my $code = $q->param('code');
	my $scode = $q->param('scode');
	my $sscode = MT::SCode::scode_get($code);
	if ($scode ne $sscode) {
		return $app->handle_error($app->translate(
		 "Wrong or missing Security Code."));
	}
	MT::SCode::scode_delete($code);
	MT::SCode::scode_create($code);
	#
	# Security hack ends
برای اینکه مطمئن شوید درست انجام داده اید، بعد از کدهای جدید این خطوط باید باشد:
کد:
	my $comment = MT::Comment->new;
	$comment->ip($app->remote_ip);
7. در مرحله بعدی لازم است بعضی تمپلیتها را ادیت کنید. وارد مووبل تایپ شوید (Login) ، تمپلیتهای زیر باید ویرایش شوند:
Individual Entry Template
Comment Listing Template
Comment Preview Template
Comment Error Template

در تمپلیتهای فوق، درست قبل از خط زیر:
کد:
<input type="submit"
این کدها را اضافه کنید:
کد:
<!-- Security Code Check -->
<input type="hidden" id="code" name="code" value="<$MTSecurityCode$>" />
<img border="0" src="<$MTCGIPath$><$MTSecurityImage$>?code=<$MTSecurityCode$>"><br />
<input tabindex=3 id="scode" name="scode" /><br /><br />
<!-- end of Security Code Check -->
در هر 4 تمپلیت و هر تمپلیت خاص دیگری که خود ساخته اید و فرم ورود نظرات دارد باید تغییرات فوق اعمال شود.

8. اگر از MTBlackList استفاده میکنید، یا باید آن را غیر فعال کنید یا اینکه کدهای مرحله 6 را به فایل MTBlPost.pm که در شاخه plugins قرار دارد اضافه کنید.

9. تمام شد. یه تستی بکنید ببینید نتیجه چی شده.




نصب برای MT3.x

ابتدا 9 مرحله فوق را انجام دهید.

10. فایل lib/MT/Template/Context.pm را باز کنید و دنبال عبارت بگردید:
کد:
sub: _hdlr_comment_fields
چنین چیزی خواهید دید:
کد:
sub _hdlr_comment_fields {
my ($ctx, $args, $cond) = @_;
کدهای زیر را بعد از آن وارد کنید:
کد:
# Security code validation
require MT::SCode; # <-- new addition
srand int (time/10)+$$;
my $securitycode = int rand(MT::SCode::scode_tmp());
$securitycode++;
MT::SCode::scode_create($securitycode);
# End Security code hack
کمی پایین تر کدهای زیر را پیدا کنید:
کد:
<MT_TRANS phrase="Remember me?">
<input type="radio" id="remember" name="bakecookie" />
و بعد از آن کدهای زیر را اضافه کنید:
کد:
<!-- Security Code Check -->
<input type="hidden" id="code" name="code" value="$securitycode" />
<label for="scode">Security Code:</label><br />
<img border="0" alt="Please enter the security code you see here" src="$path/mt-scode.cgi?code=$securitycode" /><br />
<input tabindex="3" id="scode" name="scode" /><br /><br />
<!-- end of Security Code Check -->
کمی پایین تر عبارت زیر را پیدا کنید:
کد:
<MT_TRANS phrase="Remember me?">
<input type="radio" id="remember" name="bakecookie" />
و بعد از آن کدهای زیر را وارد کنید:
کد:
<!-- Security Code Check -->
<input type="hidden" id="code" name="code" value="$securitycode" />
<label for="scode">Security Code:</label><br />
<img border="0" alt="Please enter the security code you see here" src="$path/mt-scode.cgi?code=$securitycode" /><br />
<input tabindex="3" id="scode" name="scode" /><br /><br />
<!-- end of Security Code Check -->


تنظیمات بیشتر:
برای تغییر رنگ کدهای تولید شده فایل mt-scode.cgi را باز کرده و متغیرهای
کد:
$c_background, $c_border, $c_line , $c_code
را اصلاح کنید

اگر روزانه افراد زیادی برای شما نظر می دهند تعداد کدهای تولید شده را در فایل SCode.pm عوض کنید:
کد:
my $scode_maxtmp = 50;
این راهنما از روی راهنمای موجود در مجموعه فایل دریافت شده نوشته شده که در انتهای آن یک FAQ هم دارد که به مشکلات معمول پاسخ داده شده. در صورت نیاز آن را هم بررسی کنید.

موفق باشید.
 
بالا