دلیل و نحوه استفاده از کد captcha در لاراول

دلیل استفاده از کد کپچا در لاراول

امنیت یکی از مواردی است که همیشه جای بحث دارد و هیچ وقت نمی توان گقت که وب سایت من از امنیت کامل برخوردار است. اگر در مورد امنیت لاراول اطلاعی ندارید، مقاله لاراول را بخوانید. یکی از مواردی که احتمال هک کردن و یا اسپم کردن توسط ربات ها وجود دارد، فرم ها می باشد. هنگام کار با فرم ها درلاراول بایستی یک کد CSRF از طریق دستور {{csrf_filed}} تولید کنیم. این قطعه کد، یک کد token می سازد که هنگام ارسال اطلاعات بررسی می شود و اطلاعاتی که از خارج از فرم مورد نظر ارسال شده باشند، مجوز ورود به برنامه ما را نخواهند داشت. اما ربات ها می توانند با استفاده از روش هایی این مورد را دور زده و اقدام به ارسال اطلاعات مخرب به وب سایت ما کنند. یکی از موارد مهم در حفظ امنیت فرم ها، استفاده از کد کپچا یا Captcha می باشد. در این مقاله قصد داریم نحوه استفاده از کد کپچا را در لاراول به شما آموزش دهیم.

نصب پکیج mewebstudio/captcha در لاراول

برای نصب پکیج فوق دو راه وجود دارد. راه اول استفاده از Composer می باشد. در مسیر اصلی پروژه خود، فایل Composer.json را باز کرده و کد زیر را به انتهای آن اضافه کنید.


{
    "require": {
        "laravel/framework": "5.0.*",
        "mews/captcha": "~2.0"
    },
    "minimum-stability": "dev"
}

راه دوم با استفاده از ترمینال می باشد. دستور زیر را در محیط ترمینال IDE خود وارد کنید تا پکیج برای شما دانلود و نصب شود.


composer require mews/captcha

گام دوم تغییرات در فایل app.php می باشد. این فایل در پوشه config قرار دارد. اگر از لاراول ۵.۱ به بعد استفاده می کنید، کد زیر را به قسمت providers فایل app.php اضافه کنید.


'providers' => [
        // ...
        Mews\Captcha\CaptchaServiceProvider::class,
    ]

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


    'providers' => [
        // ...
        'Mews\Captcha\CaptchaServiceProvider',
    ]

در مرحله بعد در قسمت aliases فایل app.php در صورت استفاده از لاراول ۵.۱ به بعد کد زیر را قرار دهید.


    'aliases' => [
        // ...
        'Captcha' => Mews\Captcha\Facades\Captcha::class,
    ]

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


    'aliases' => [
        // ...
        'Captcha' => 'Mews\Captcha\Facades\Captcha',
    ]

در مرحله آخر کد زیر را در فایل captcha.php که در پوشه config قرار دارد، قرار دهید.


return [
    'default'   => [
        'length'    => 5,
        'width'     => 120,
        'height'    => 36,
        'quality'   => 90,
    ],
    // ...
];

کار نصب و پیکربندی تمام شد. شما می توانید در برنامه های خود از این captcha استفاده کنید. فقط کافی است namespace این کلاس را به Controller خود اضافه کنید تا توابع Captcha برای شما فعال شود.

برای ساختن تصویر captcha در View مورد نظر از کد زیر استفاده کنید


 captcha_img('flat');
 captcha_img('inverse');

 

عملیات validation نیز همانند دیگر فرم ها انجام می شود. 


$this->validate(request(),[

            'captcha' => 'required|captcha',

        ]

اگه سوالی داشتید در قسمت کامنت مطرح کنید.

  1. majid
    این پکیج رو چطوری داخل فرم ریستر وارد کنیم؟
  2. مرتضی گودرزی
    همونطور که گفته شد از کد زیر در فرم مورد نظر استفاده کنید
    {{ captcha_img('flat');}}
  3. majid
    ممنون.داخل لوکال مشکلی نداره ولی زمانی که فایل مربوطه رو میبرم داخل هاست اشتراکی اررور نمای داده میشه! Class 'Mews\Captcha\Facades\Captcha' not found
  4. مرتضی گودرزی
    متن ارور میگه کلاس Captcha رو پیدا نمیکنه. شما باید تو کنترلری که view مورد نظرتون رو لود می کنید، کلاس Captcha رو use کنید.
  5. ابراهیم اسدی
    با تشکر، پیغام زیر دریافت می شه. ممنون می شم راهنمایی کنید array_merge(): Argument #2 is not an array \vendor\laravel\framework\src\Illuminate\Support\ServiceProvider.php:63
  6. وحید
    با تشکر از مطلب خوبتون فقط برای validation در سیستم Auth دقیقا چطور باید عمل کنیم؟

ثبت نظر جدید