آموزش زبان های برنامه نویسی

آموزش زبان های برنامه نویسی

آموزش انواع زبان های برنامه نویسی
آموزش زبان های برنامه نویسی

آموزش زبان های برنامه نویسی

آموزش انواع زبان های برنامه نویسی

نحوه ساخت Captcha برای سایت

نحوه ساخت Captcha برای سایت


وقتی که سایتی بر روی اینترنت بارگذاری می شود و دارای صفحه ی ورود کاربران به سامانه می باشد باید هنگام ورود به سامانه از Captcha استفاده شود تا از هک کردن سایت توسط روبات ها جلوگیری شود.

ساخت کپچا خیلی ساده است فقط کافی است طبق روش زیر عمل شود.

ابتدا در صفحه ی html کدهای زیر را قرار می دهیم.


تسکت باکسی که می خواهیم کد های آن بررسی شود

 <asp:TextBox ID="txtCaptcha" runat="server" Width="200px"></asp:TextBox>

بعد تصویر نمایش کپچا  را در زیر قرار می دهیم.


 <table>

                                <tr>

                                    <td style="height: 50px; width:100px;">

                                        <asp:Image ID="imgCaptcha" runat="server" />

                                    </td>

                                    <td valign="middle">

                                        <asp:Button ID="btnRefresh" runat="server" Text="Refresh" OnClick="btnRefresh_Click" />

                                    </td>

                                </tr>

                            </table>

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


  public partial class GenerateCaptcha : System.Web.UI.Page

    {

        protected void Page_Load(object sender, EventArgs e)

        {

            Response.Clear();

            int height = 40;

            int width = 130;

            Bitmap bmp = new Bitmap(width, height);


            RectangleF rectf = new RectangleF(10, 5, 0, 0);


            Graphics objGraphics = Graphics.FromImage(bmp);

            Color objcolor = Color.FromArgb(250,182,239, 147);

            objcolor.GetHue();

            objGraphics.Clear(objcolor);


            objGraphics.SmoothingMode = SmoothingMode.AntiAlias;

            objGraphics.InterpolationMode = InterpolationMode.HighQualityBicubic;

            objGraphics.PixelOffsetMode = PixelOffsetMode.HighQuality;

            string objtext = Session["captcha"].ToString();

            string objnewText = "";

            for (int i = 0; i < objtext.Length; i++)

            {

                objnewText += objtext.Substring(i,1);

                objnewText += " ";

            }


            objGraphics.DrawString(objnewText, new Font("Thaoma", 16, FontStyle.Strikeout), Brushes.Gray, rectf);

            objGraphics.DrawRectangle(new Pen(Color.Gold), 1, 1, width - 2, height - 2);

            objGraphics.Flush();

            Response.ContentType = "image/jpeg";

            bmp.Save(Response.OutputStream, ImageFormat.Jpeg);

            objGraphics.Dispose();

            bmp.Dispose();

        }

    }



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


 protected void Page_Load(object sender, EventArgs e)

        {

           

            if (!IsPostBack)

            {

                FillCapctha();

            }


        }

        void FillCapctha()

        {

            try

            {

                Random random = new Random();

                string combination = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";

                StringBuilder captcha = new StringBuilder();

                for (int i = 0; i < 6; i++)

                    captcha.Append(combination[random.Next(combination.Length)]);

                Session["captcha"] = captcha.ToString();

                imgCaptcha.ImageUrl = "GenerateCaptcha.aspx?" + DateTime.Now.Ticks.ToString();

                //HandlerTest.ashx

                //imgCaptcha.ImageUrl = "HandlerTest.ashx?" + DateTime.Now.Ticks.ToString();

            }

            catch

            {


                throw;

            }

        }


        protected void btnRefresh_Click(object sender, EventArgs e)

        {

            FillCapctha();

        }


        protected void btnRegister_Click(object sender, EventArgs e)

        {

            if (Session["captcha"].ToString().ToLower() != txtCaptcha.Text.Trim().ToLower())

                Response.Write("Invalid Captcha Code");

            else

                Response.Write("Valid Captcha Code");

            FillCapctha();

        }

    }