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

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

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

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

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

نحوه ساخت 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();

        }

    }


نحوه صدا زدن وب سرویس های با وردی و خروجی JSON

نحوه صدا زدن وب سرویس هایی با وردی و خروجی JSON


برای صدا زدن وب سرویس های Json  در محیط کد نویسی #C با روش زیر عمل می کنیم.


            var webAddr = "http://localhost:28327/IVR/IVRService.svc/CookiePursuitService/xxxx";

            var httpWebRequest = (HttpWebRequest)WebRequest.Create(webAddr);

            httpWebRequest.ContentType = "application/json; charset=utf-8";

            httpWebRequest.Method = "POST";


            using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))

            {

                string json = "{\"Key\":\"50xxxxx\",\"TrackingNo\":\"94xxxxx\"}";


                streamWriter.Write(json);

                streamWriter.Flush();

            }


            var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();

            using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))

            {

                var result = streamReader.ReadToEnd();

            }

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



نحوه ساخت جدول Table داینامیک در #C


نحوه ساخت جدول Table داینامیک در #C


ابتدا در بخش Html  کد زیر را قرار می دهیم/

 <asp:PlaceHolder ID="Place" runat="server"></asp:PlaceHolder>


سپس در بخش کد نویسی سی شارپ کد زیر را قرار می دهیم


  HtmlTable table = new HtmlTable();

                table.Border = 1;

                table.CellPadding = 3;

                table.Width = "100%";

                // Populate the HtmlTable control by adding rows to it. 

                for (int rowcount = 0; rowcount < objobjCookiefieldList.Count(); rowcount++)

                {

                    // Create a new HtmlTableRow control.

                    HtmlTableRow row = new HtmlTableRow();


                    // Add cells to the HtmlTableRow control.

                    for (int cellcount = 0; cellcount < 2; cellcount++)

                    {

                        // Define a new HtmlTableCell control.

                        HtmlTableCell cell;


                        // Create table header cells for the first row.

                        if (rowcount <= 0)

                        {

                            cell = new HtmlTableCell("th");

                        }

                        else

                        {

                            cell = new HtmlTableCell();

                        }


                        // Create the text for the cell.

                      

                        if (cellcount==0)

                        {

                            cell.Controls.Add(new LiteralControl(objobjCookiefieldList[rowcount].CookieFieldName));

                        }

                        else

                        {

                            cell.Controls.Add(new LiteralControl(objobjCookiefieldList[rowcount].CookieFieldValue));

                        }


                        // Add the cell to the HtmlTableRow Cells collection. 

                        row.Cells.Add(cell);


                    }


                    // Add the row to the HtmlTable Rows collection.

                    table.Rows.Add(row);


                }


                // Add the control to the Controls collection of the 

                // PlaceHolder control.

                Place.Controls.Clear();

                Place.Controls.Add(table);



نحوه افزودن یک برنامه تحت ویندوز به بخش SysTry


نحوه افزودن یک برنامه تحت ویندوز به بخش SysTry


در این مثال ما یک برنامه تحت ویندوز با استفاده از زبان برنامه نویسی #C نوشته ایم و قصد داریم هرگاه بروی دکمه Minimize کلیک کردیم برنامه به بخش  Systry  اجرا شود و با دابل کلیک بر روی آن برنامه دوباره نمایش داده شود.

کد های مربوط به این کار بصورت زیر می باشد.


   private void IntervalEarthquake_Resize(object sender, EventArgs e)

        {

            mynotifyicon.BalloonTipTitle = "برنامه تست";

            mynotifyicon.BalloonTipText = "جهت تست این برنامه استفاده می شود";


            if (FormWindowState.Minimized == this.WindowState)

            {

                mynotifyicon.Visible = true;

                mynotifyicon.ShowBalloonTip(500);

                this.Hide();

            }


            else if (FormWindowState.Normal == this.WindowState)

            {

                mynotifyicon.Visible = false;

            }

        }


        private void mynotifyicon_MouseDoubleClick(object sender, MouseEventArgs e)

        {

            this.Show();

            this.WindowState = FormWindowState.Normal;

        }

نحوه ی اجرای یک برنامه ی تحت ویندوز با #C هنگام راه اندازی ویندوز


نحوه ی اجرای یک برنامه ی تحت ویندوز با #C هنگام  روشن کردن کامپیوتر


در این مثال ما یک برنامه با ویژوال استدیو طراحی کردیم و قصد دراریم هر بار که ویندوز بالا می اید یا به اصطلاح کامپیوتر را روشن می کنیم این برنامه اجرا شود. ما این برنامه را با استفاده از زبان برنامه نویسی #C نوشته ایم. و در بخش  Load  صفحه این کد را قرار می دهیم.


 //StartUp Windows -- شروع برنامه هنگام راه اندازی ویندوز

            RegistryKey add = Registry.CurrentUser.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true);

            add.SetValue("Your App Name", "\"" + Application.ExecutablePath.ToString() + "\"");

نحوه ساخت فایل زیپ در #C


نحوه ساخت فایل زیپ در #C


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

و همچنین امکان ذخیره آن نیز وجود دارد.


        private void CreateZipFiles(string alljson)

        {

          


            int RegionId = Convert.ToInt32(drpRegionId.SelectedValue);

            byte[] jsondata = GetBytes(alljson);


            string jsonName = string.Format(RegionId.ToString() + ".json");

            string zipName = string.Format(RegionId.ToString() + ".zip");


            using (DAL.DataClassesDataContext Context = new DAL.DataClassesDataContext())

            {

                using (Ionic.Zip.ZipFile zip = new Ionic.Zip.ZipFile())

                {

                    zip.CompressionLevel = Ionic.Zlib.CompressionLevel.Level5;

                    var ItemAtachment = Context.ItemAttachment_FCH(null, null, RegionId).ToList();

                    int countid = 1;

                    int tempItemId = 0;

                    foreach (var item in ItemAtachment)

                    {

                        if (item.ItemAttachmentTypeid == 1)

                        {

                            try

                            {

                                //صاحب پروانه

                                Byte[] ItemImage = (Byte[])item.ItemAttachmentContent.ToArray();

                                jsonName = item.ItemId + "-" + "main" + ".jpg";

                                zip.AddEntry(jsonName, ItemImage);

                            }

                            catch

                            {

                            }

                        }

                        else if (item.ItemAttachmentTypeid == 2)

                        {

                            //سر در مشاور املاک

                            if (tempItemId != item.ItemId)

                            {

                                countid = 1;

                            }


                            Byte[] ItemImage = (Byte[])item.ItemAttachmentContent.ToArray();

                            jsonName = item.ItemId + "-" + "sub" + "-" + countid + ".jpg";

                            zip.AddEntry(jsonName, ItemImage);

                            tempItemId = item.ItemId;

                            countid++;

                        }


                    }


                    jsonName = string.Format(RegionId.ToString() + ".json");

                    zip.AddEntry(jsonName, jsondata);

                    //zip.Save(Server.MapPath(zipName));


                    Response.Clear();

                    Response.BufferOutput = false;


                    Response.ContentType = "application/zip";

                    Response.AddHeader("content-disposition", "attachment; filename=" + zipName);

                    zip.Save(Response.OutputStream);

                    Response.End();


                }

            }


        }

// تبدیل فایل متنی به بایت

static byte[] GetBytes(string str)

        {

            byte[] bytes = new byte[str.Length * sizeof(char)];

            System.Buffer.BlockCopy(str.ToCharArray(), 0, bytes, 0, bytes.Length);

            return bytes;

        }

نحوه ارسال دو پارامتر در WCF


نحوه ارسال دو پارامتر به تابع با در WCF


کدها زیر را در سرویس مورد نظر می نویسیم 

 [OperationContract]

        [WebInvoke(UriTemplate = "Invoice", RequestFormat = WebMessageFormat.Json,BodyStyle=WebMessageBodyStyle.WrappedRequest, ResponseFormat = WebMessageFormat.Json, Method = "POST")]

        OutputResultStruct<KeyValuePair<string, int>> AddToInvoice(Invoice invoice, List< InvoiceDetail> invoicedetail,int RequestId);


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


  public class OutputResultStruct<T> where T : struct

    {


        public bool IsValidResult { get; set; }

        public int ErrorCode { get; set; }

        public string Description { get; set; }

        private List<T> _resultvalue;

        public List<T> resultvalue

        {

            get

            {

                return (List<T>)_resultvalue;

            }

            set

            {

                _resultvalue = value;

            }


        }



    }


و مقدار زیر را هم در Web Config قرار می دهیم تا در هنگام آدرس دهی مشکلی نداشته باشیم


  

 <system.serviceModel>

    <services>

        <endpoint address="InvoiceService" binding="webHttpBinding" contract="HamrahMelk.IInvoiceService"

                                 behaviorConfiguration="MyEndpointBehavior" name="InvoiceService" > </endpoint>


</services>

  </system.serviceModel>


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


  public OutputResultStruct<KeyValuePair<string, int>> AddToInvoice(Invoice invoice, List<InvoiceDetail> invoicedetail, int RequestId)

        {

            var OBJresult = new OutputResultStruct<KeyValuePair<string, int>>();

            try

            {

                using (DataClassesDataContext Context = new DataClassesDataContext())

                {


                    Invoice obj = new Invoice();


                    obj.UserId = invoice.UserId;

                    obj.RequestId = RequestId;

                    Context.Invoices.InsertOnSubmit(obj);

                    Context.SubmitChanges();



                    var Resultinvoicedetail = AddToInvoiceDetail(invoicedetail, obj.InvoiceId);


                    if (Resultinvoicedetail.IsValidResult==false)

                    {

                        Invoice ObjInvoiceDelete = Context.Invoices.Single(q => q.InvoiceId == obj.InvoiceId);

                        Context.Invoices.DeleteOnSubmit(ObjInvoiceDelete);

                        Context.SubmitChanges();


                        OBJresult.ErrorCode = Resultinvoicedetail.ErrorCode;

                        OBJresult.Description = Resultinvoicedetail.Description;

                        OBJresult.IsValidResult = false;

                        OBJresult.resultvalue = new List<KeyValuePair<string, int>>() ;

                    }

                    else

                    {

                    OBJresult.ErrorCode = Resultinvoicedetail.ErrorCode;

                    OBJresult.Description = Resultinvoicedetail.Description;

                    OBJresult.IsValidResult = true;

                    OBJresult.resultvalue = new List<KeyValuePair<string, int>>() { new KeyValuePair<string, int>("InsertId", obj.InvoiceId) };

                    }


                  

                }


            }

            catch (Exception ex)

            {

                OBJresult.ErrorCode = 2;

                OBJresult.Description = ex.Message;

                OBJresult.IsValidResult = false;

                OBJresult.resultvalue = new List<KeyValuePair<string, int>>();


            }

            return OBJresult;

        }



نحوه خواندن اطلاعات فایل XML در #C


نحوه کار با فایل XML در #C


فایل XML


<?xml version="1.0" encoding="utf-8" ?>

<items>

  <item>

    <Key>123</Key>

  </item>

  <item>

    <Key>451</Key>

  </item>

</items>


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



 XmlNode xmlNode;

            XmlDocument xmlDoc = new XmlDocument();

            String htmlCode = string.Empty;

            WebClient htmlDoc = new WebClient();

            string AddresXml = HttpContext.Current.Server.MapPath(@"\App_Data\APIKeys.xml");

            htmlCode = htmlDoc.DownloadString(AddresXml);

            //htmlCode = htmlCode.Substring(htmlCode.IndexOf("<table class=\"comodities\" style=\"margin-top:4px;\">"), htmlCode.IndexOf("</table></center><br>") - htmlCode.IndexOf("<table class=\"comodities\" style=\"margin-top:4px;\">") + 8);

            htmlCode = htmlCode.Replace("'", "\"");

            htmlCode = htmlCode.Replace("</a>", "");

            xmlDoc.LoadXml(htmlCode);


            for (int i = 0; i < xmlDoc.ChildNodes.Count; i++)

            {

                if (xmlDoc.ChildNodes[i].Name == "items")

                {

                    for (int j = 0; j < xmlDoc.ChildNodes[i].ChildNodes.Count; j++)

                    {


                        if (xmlDoc.ChildNodes[i].ChildNodes[j].Name == "item")

                        {

                            key = Convert.ToString(xmlDoc.ChildNodes[i].ChildNodes[j].ChildNodes[0].InnerText);

                            Guid.TryParse(key, out apiKey);

                            OBJGuid.Add(apiKey);

                        }

                    }

                }

            }



نحوه ارتباط با دیتابیس به وسیله کد های LINQ



نحوه ایجاد Inner join با استفاده از دستورات لینکیو در سی شارپ


What is the syntax for an inner join in linq to sql?


from t1 in db.Table1
join t2 in db.Table2 on t1.field equals t2.field
select new { t1.field2, t2.field3}


چگونه حجم عکس را در#C پایین بیاوریم


چگونه حجم عکس را در#C  پایین بیاوریم


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


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


عدد مورد نظر را بر سایز عکس تقسیم می کنیم و نهایتن رادیکال آن را بدست می آوریم. و مقدار بدست آمده را در طول و عرض عکس مورد نظر ضرب می کنیم و کد آن هم بصورت زیر می باشد.


البته قبل از کار کردن باید یک رفرنس به نام System.web.Helpers را اضافه کنیم 


در این مثال قصد داریم یک عکس از کاربر دریافت کنیم و نهایتن ججم آن عکس را به 50 کیلو بایت برسانیم


using System.Web.UI.WebControls;


double AttachmentTypeMaxSize = 1024;

                    double Length = FileUploadSendFile.PostedFile.ContentLength;

                    double UserInsert =50* 1024;

                    double sizeimage = Math.Sqrt((UserInsert / Length));

                   

                    Byte[] FileUplodData = (Byte[])FileUploadSendFile.FileBytes;

 if (Length >= UserInsert)

                    {

                        System.Drawing.Image imgFile = System.Drawing.Image.FromStream(FileUploadSendFile.PostedFile.InputStream);

                        double ImageWith = imgFile.PhysicalDimension.Width * sizeimage;

                        double ImageHeight = imgFile.PhysicalDimension.Height * sizeimage;

                        var webImage = new System.Web.Helpers.WebImage(FileUploadSendFile.FileBytes);

                        webImage.Resize(Convert.ToInt32(ImageWith),Convert.ToInt32(ImageHeight), false, true);

                        //webImage.Save(AppDomain.CurrentDomain.BaseDirectory, "jpg", true);

                        FileUplodData= webImage.GetBytes();


                    }