ساخت تصویر امنیتی در php
0 0

ساخت تصویر امنیتی در php


ساخت تصویر امنیتی در php

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

برای ساخت تصویر امنیتی در php ما یکی فایل index.php که صفحه اصلی ما هست که کد لازم رو تولید میکنه و بعدا نمایش میده و صفحه SecurityCode.php که کد تولید شده در صفحه index رو برای ما تبدیل به یه تصویر میکنه و به خروجی میبره.

session_start();
$text='QWERTYUIOPASDFGHJKLZXCVBNM123456789';
$code='';
for($i=1;$i<=6;$i++)
{
$start=rand(0,strlen($text));
$code.=substr($text,$start,1);
}
$_SESSION['code']=$code;

خوب اول از همه session رو استارت کردیم چون لازمش داریم،مخوایم کد تولید شده رو با همین سشن بفرستیم به صفحه تولبد عکس ما،بعدش ما یه متغییر تعریف کردیم و اون کاراکترهای لازم رو که میخوایم توی کد امنیتی استفاده بشن رو توش قرار دادیم (من همینجوری صفحه کلید رو از دکمه اول تا آخرش زدم و بعدشم اعداد رو اضافه کردم)،بعد از اون یه متغییر تعریف کردم که قراره کد توی اون ذخیره بشه،فعلا خالیش گذاشتیم،حالا یه حلقه تعریف میکنیم که تو هر بار اجرای خودش به صورت تصادفی یکی از اون کارکتر های متفییر text رو برای ما برمیگردونه(با کلمه rand ما اولش یه عدد از صفر تا strlen رشته اصلی انتخاب میکنیم،بوسیله substr مقدار شروع انتخاب زیر رشته رو همون عدد رندوم قرار دادیم وطولش رو هم یک گذاشتیم)  و به متغییر code که از اول خالی بوده اضافه میکنه،بعد از حلقه کد تصادفی ما ایجاد شده (اینجا ما تعداد دور حلقه روگذاشتیم 6 و این باعث میشه ما یه کد 6 حرفی داشته باشیم شما می تونید کم یا زیادش کنید یا مثلا بازم یه عدد رندوم بهش بدید)،آخر کار هم ما همین کد تولید شده رو گذاشتیم توی session ،خوب کد های مربوط به صفحه index تموم شد حالا میریم سراغ صفحه تولید تصویر.

session_start();
header('Content-type: image/jpeg');
$code=$_SESSION['code'];
$font_size=30;
$image_width=200;
$image_height=60;
$image= imagecreate($image_width,$image_height);
imagecolorallocate($image,220,220,220);
$text_color= imagecolorallocate($image,0,0,0);
imagettftext
       ($image, $font_size,0,30,45, 
                $text_color,'font.ttf', $code);
imagejpeg($image);

خوب اول از همه سشن استارت،بعدشم چون قراره خروجی این فایل از نوع تصویر باشه پس ما اومدیم با تنظیم هدر خروجی فایل رو گذاشتیم روی تصویر jpg،بعدشم مقدار کد رو از سشن خوندیم و گذاشتیم توی یه متغییر،ما اینجا اومدیم یه سری متغییر تعریف کردیم که مشخصات اون تصویر رو توی خودش داره،اندازه فونت رو گذاشتیم 30،طول عکس شده 200 پیکسل و ارتفاع تصویر هم شده 60 پیکسل.

نکته :دستورات این قسمت مربوط میشه به کتابخانه GD که روی wampserver و اکثر هاستینگ ها هم نصب و فعاله،از این کتابخانه برای تولید تصاویر به این صورت که می بینید استفاده میشه

Bitmap SecImage =new Bitmap(Server.MapPath("code.jpg"));
Graphics Graphics = Graphics.FromImage(SecImage);
Graphics.DrawString(showcode.ToString(),
      new Font("arial", 13, FontStyle.Strikeout),
      new SolidBrush(Color.White), new PointF(3, 5));
SecImage.Save(Server.MapPath("codesave.jpg"));
imgcode.ImageUrl = "codesave.jpg";

خوب حالا با متد imagecreate و با دادن طول و عرض بهش یه تصویر می سازیم و اونو توی متغییر image قرار میدیم،بعدشم با متد imagecolorallocate تصویر مون رو با رنگ خاکستری پر میکنیم(اون مقادیر عددی به صورت RGB هستن)،خوب حالا برای رنگ نوشته مون هم با همون متد یه  رنگ مشکی میگیریم و توی متغییر text_color قرار میدیم،حالا میخوایم با متد imagettftext متن کد رو روی تصویرمون بنویسیم.

  • پارامتر 1: متغییر تصویر رو دریافت میکنه که همون image هست.
  • پارامتر 2 : سایز فونت رو دریافت میکنه که ما اون بالا تعریف کردیم.
  • پارامتر 3 :زاویه چرخش متن رو توی عکس دریافت میکنه که ما گذاشتیم 0.
  • پارامتر 4 :فاصله x رو دریافت میکنه،فاصله نوشته از سمت چپ نسبت به تصویر.
  • پارمتر 5 : فاصله y رو دریافت میکنه،فاصله نوشته از سمت بالا نسبت به تصویر.
  • پارامتر 6 : رنگ متن رو که تولید کرده بودیم دریافت میکنه.
  • پارامتر 7 :یه فونت رو دریافت میکنه که با اون متن رو می نویسه(آدرس فونت باید مستقیم باشه،من الان فونت روگذاشتم کنار فایل)
  • پارامتر 8 :اینم متنی رو که میخوایم روی تصویر بنویسیم مشخص میکنه که این جا همون کد امنیتی ماست.

خوب آخر کار هم با دستور imagejpeg که متغییر تصویر رو به عنوان ورودی میگیره،تصویر خودمون رو تولید میکنیم.

خوب حالا ما توی فایل index.php خودمون برای نمایش این تصویر و نتیجه کار از یه تگ img استفاده میکنیم و src اونو برابر فایل SecurityCode خودمون قرار میدیم (یادتون باشه نوع محتوای فایل SecurityCode تصویر هست).

در صفحه html شما فقط باید یک تگ img داشته باشید که به صورت زیر می باشد.

<img src="SecurityCode.php">

دانلود

نویسنده حسین فتحی
گروه مطلب PHP
نوع مطلب سورس کد و آموزش
تاریخ انتشار ۵ دی ۱۳۹۲
منبع ایران گنج
تعداد نظرات ۲
قیمت کاربران عضو سایت
توضیح توجه:
  • زمانی که روی لینک دانلود کلیک می کنید لینک دانلود به مدت 24 ساعت معتبر خواهد بود
  • لینک های دانلود دوره های آموزشی تا پایان دوره قابل دانلود می باشد.
  • برای خارج کردن فایل ها از حالت فشرده از ورژن جدید نرم افزار winrar استفاده کنید.
  • برای خارج کردن فایل ها از حالت فشرده لینک های دانلودی که چندین قسمت می باشند فقط قسمت اول را از حالت فشرده خارج کنید.
  • لطفا توضیحات نوشته شده برای مطالب را با دقت بخوانید.
  • برای نمایش فیلم ها می توانید از نرم افزار هایی مانند Km Player , VLC Player یا Media Player Classic استفاده کنید.

نظر / سوال

Captcha
نظرات کاربران

  • محمد حسین

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

    پاسخ
    • مدیر

      با سلام و درود به شما کاربر گرامی

      تصویر امنیتی تولید شده در یک متغییر هستش و در صفحه یک اینپوت و سابمیت قرار دهید و بعد از اینکه کاربر تصویر امنیتی را وارد کرد و روی سابمیت کلیک کرد تصویر امنیتی تولید شده را با کاربری که وارد کرده مقایسه کنید.

      پاسخ