1. 程式人生 > >[ASP.NET]仿京東專案總結

[ASP.NET]仿京東專案總結

驗證碼的實現:

namespace jingdong.Verification_code
{
    public partial class Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (Request.QueryString["mathmod"] != null)
            {
                if (Request.QueryString["mathmod"] == "reg")
                {
                    string temp = GenerateCheckCode();
                    Session["Verification_code"] = temp;
                    this.CreateCheckCodeImage(temp);
                }
                else if (Request.QueryString["mathmod"] == "repwd")
                {
                    string temp = GenerateCheckCode();
                    Session["repwd_Verification_code"] = temp;
                    this.CreateCheckCodeImage(temp);
                }
            }
        }

        private string GenerateCheckCode()
        {
            int number;
            char code;
            string checkCode = String.Empty;

            System.Random random = new Random();

            for (int i = 0; i < 5; i++)
            {
                number = random.Next();

                if (number % 2 == 0)
                    code = (char)('0' + (char)(number % 10));
                else
                    code = (char)('A' + (char)(number % 26));

                checkCode += code.ToString();
            }

            Response.Cookies.Add(new HttpCookie("CheckCode", checkCode));

            return checkCode;
        }

        private void CreateCheckCodeImage(string checkCode)
        {
            if (checkCode == null || checkCode.Trim() == String.Empty)
                return;

            System.Drawing.Bitmap image = new System.Drawing.Bitmap((int)Math.Ceiling((checkCode.Length * 12.5)), 22);
            Graphics g = Graphics.FromImage(image);

            try
            {
                //生成隨機生成器
                Random random = new Random();

                //清空圖片背景色
                g.Clear(Color.White);

                //畫圖片的背景噪音線
                for (int i = 0; i < 25; i++)
                {
                    int x1 = random.Next(image.Width);
                    int x2 = random.Next(image.Width);
                    int y1 = random.Next(image.Height);
                    int y2 = random.Next(image.Height);

                    g.DrawLine(new Pen(Color.GreenYellow), x1, y1, x2, y2);
                }

                Font font = new System.Drawing.Font("Verdana", 10, (System.Drawing.FontStyle.Bold));
                System.Drawing.Drawing2D.LinearGradientBrush brush = new System.Drawing.Drawing2D.LinearGradientBrush(new Rectangle(0, 0, image.Width, image.Height), Color.Blue, Color.DarkRed, 1.2f, true);
                g.DrawString(checkCode, font, brush, 2, 2);

                //畫圖片的前景噪音點
                for (int i = 0; i < 80; i++)
                {
                    int x = random.Next(image.Width);
                    int y = random.Next(image.Height);

                    image.SetPixel(x, y, Color.FromArgb(random.Next()));
                }

                //畫圖片的邊框線
                g.DrawRectangle(new Pen(Color.Red), 0, 0, image.Width - 1, image.Height - 1);

                System.IO.MemoryStream ms = new System.IO.MemoryStream();
                image.Save(ms, System.Drawing.Imaging.ImageFormat.Gif);
                Response.ClearContent();
                Response.ContentType = "image/Gif";
                Response.BinaryWrite(ms.ToArray());
            }
            finally
            {
                g.Dispose();
                image.Dispose();
            }
        }
    }
}

使用者密碼加密實現:

namespace jingdong
{
    public class Myencrypt : __encrypt__
    {
        public string GetSha1(string str)
        {
            return Encryptions(str);
        }
    }


    public class __encrypt__
    {
        /// <summary>
        /// 加密介面
        /// </summary>
        /// <param name="str">要加密的字串</param>
        /// <returns>返回加密以後的密文</returns>
        public string Encryptions(string str)
        {
            return encryptions(str);
        }

        /// <summary>
        /// 加密實現
        /// </summary>
        /// <param name="str">要加密的字串</param>
        /// <returns>如果加密成功,返回密文;否則返回空</returns>
        private string encryptions(string str)
        {
            if (!String.IsNullOrEmpty(str))
            {
                return System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(str, "SHA1").ToLower();
            }
            else
            {
                return string.Empty;
            }
        }
    }
}

相關推薦

[ASP.NET]仿京東專案總結

驗證碼的實現: namespace jingdong.Verification_code { public partial class Default : System.Web.UI.Page { protected void Page_L

ASP.Net MVC OA專案筆記<六>

1.1.1 開始寫業務,先寫業務的實現再寫業務的介面          業務類中也是有寫增刪改查公用的方法          引用Model,IDAL,DALFactory     &

asp.net 仿微信端選單設定

第一步:新增引用檔案 <link rel="stylesheet" href="~/assets/css/bootstrap.min.css"> <link rel="stylesheet" href="~/assets/css/font-awesome.min.css"> <

asp.net core2.0專案部署在IIS上執行

與ASP.NET時代不同,ASP.NET Core不再是由IIS工作程序(w3wp.exe)託管,而是獨立執行的。它獨立執行在控制檯應用程式中,並通過dotnet執行時命令呼叫。它並沒有被載入到IIS工作程序中,但是IIS卻載入了名為AspNetCoreModule的

asp.net core webapi專案配置全域性路由

/// <summary> /// 全域性路由字首配置 /// </summary> public class RouteConvention : IApplicationModelConvention { /// <summar

【緊跟時代】建立asp.net core angular專案

需要安裝node.js,如何安裝請自行百度  1、使用vs2017 建立專案,選擇ASP.NET Core Web應用程式,名稱為:ASPNetAngularDemo 選擇angular專案,可以看到是 .NET Core  版本:ASP.NET Core 2.0 

VS2013新建asp.net空網站專案失敗,配置IISexpress失敗,未能找到web伺服器“http://localhost”解決方案

前兩天用vs2013新建asp.net空網站時失敗了出現這個問題: 於是我上網搜尋關鍵字“配置IISexpress失敗,未能找到web伺服器“http://localhost”,結果是這樣滴 並沒有我這個問題的解決辦法,然後我就只能死馬當活馬醫,隨便試試了,說不定就好了呢。有一個

ASP.Net操作Access資料庫總結

1、資料庫的連線 引入名稱空間 using System.Data; using System.Data.OleDb; 連線程式碼:    string strConnection = "Provider=Microsoft.ACE.OLEDB.12.0;";      

使用Visual Studio 2015 開發ASP.NET MVC 5 專案部署到Mono/Jexus

最新的Mono 4.4已經支援執行asp.net mvc5專案,有的同學聽了這句話就興高采烈的拿起Visual Studio 2015建立了一個mvc 5的專案,然後部署到Mono上,瀏覽下發現一堆錯誤出現,心中一萬隻草泥馬奔騰而來,這也叫支援嗎,這個問題是Visual Studio造成的,不相信的話可以使用

釋出ASP.NET Web API專案時外部網路載入不進去

今天將API專案釋出到Win2008R2的環境中去時,發現了幾個問題,首先是,系統報錯提示“Could not load file or assembly 'Microsoft.AI.Web' or one of its dependencies. 系統找不到指定的檔案。 ” 網上

Asp.Net各種超時問題總結

在資料庫或者請求操作時,如果選擇的時間段過短或操作資料量過大,就會遇到"請求超時"的的問題,網路上提供很多解決方案,但普遍不完善,根據個人經驗及參考網路解決方案,先將其彙總如下:    根據錯誤型別,大致分為如下幾種情況  1:Asp.net請求超時  2:IIS請求超時 

net-snmp移植專案總結

1、       專案移植總結 1.1  交叉編譯的configure引數的配置 交叉編譯引數的設定,這個部分是最基本的,如果引數設定的有問題,snmpd執行起來就會有問題。 在x86環境下進行測試的時候,選用一個簡單的編譯引數,可以工作: LDFLAGS="-L

ASP.NET MVC搭建專案後臺UI框架—1、後臺主框架

目錄 準備做一個新的專案,從網頁設計師手中拿到了html靜態頁面(沒有一行js),但是都一個個零散的介面,我需要做的是: 1、  把這些零散的html介面連線起來 2、  自己編寫js或者jquery實現選單效果 3、  把html頁面整合在我們的MVC Razor檢視中 本想著使用第三方的UI

ASP.NET MVC搭建專案後臺UI框架—6、客戶管理(新增、修改、查詢、分頁)

目錄 接著之前未寫完的繼續,本篇,我將講解在此UI框架中和ASP.NET MVC4進行結合開發。效果如下: 這裡,我將新增和修改用了兩個不同的檢視,當然也可以把新增和修改放到同一個檢視中,但是要寫一些業務邏輯程式碼來區分當前呼叫的是修改還是新增,根據新增和修改的不同,而對介面進行不同的操作。 新

ASP.NET MVC搭建專案後臺UI框架—8、將View中選擇的資料行中的部分資料傳入到Controller中

目錄 現在,有一個需求,我需要將表格中選中行的資料中的一部分傳直接傳到控制器中,然後儲存到另外一張表中。一開始,我就想到在前臺使用ajax構造json資料,然後控制器直接通過list接收。 選中介面中的行,然後點選“批量新增到月結表”,彈出一個對話方塊,這個對話方塊的月份列表為當前選擇資料行中

ASP.NET MVC搭建專案後臺UI框架—2、選單特效

目錄 上一篇,已經把整個專案的框框給搭建好了,但是還沒有任何js效果實現。這一節,我就來說下關於選單的特效實現。我需要的效果如下: 需求總結: 點選頂部選單模組,左側顯示不同模組下面的選單列表 點選左側選單選項,展開下面的子選單,並摺疊其它選單模組,選單圖示摺疊顯示為+,展開顯示為

ASP.NET MVC搭建專案後臺UI框架—3、面板摺疊和展開

目錄 上一節已經新增好了選單特效,這一節,我們來新增面板的摺疊和展開功能,效果圖如下: 思路:我在Right檢視中添加了一個div,在這個div中存放一張圖片,通過對這張圖片的點選,來控制Left檢視的隱藏和顯示。說白了,這裡其實就是修改主框架Index檢視中frameset的 cols屬性。

ASP.NET MVC搭建專案後臺UI框架—7、統計報表

本節,我將通過一個Demo,演示Datatables 和ASP.NET MVC的完美結合,可以這麼說,如果這樣的介面都能做出來,後臺系統90%的介面功能都可以開發出來了。 用jquery Datatables 來開發確實是件比較蛋疼的事情(和Jquery EasyUI、MiniUI、ExtJs相比),用

ASP.NET MVC搭建專案後臺UI框架—11、自動載入下拉框查詢

需求:在查詢記錄的時候,輸入第一個字,就自動把以這個字開頭的相關記錄查找出來,輸入2個字就過濾以這兩個子開頭的記錄,依次類推。 突然要用到這個功能了,印象中曾經寫過這個功能的文章,一下子找不到了,只好重新貼出來備忘。最近部落格快2個月沒更新了,因為這兩個月一直在閉門寫書。   <link

ASP.NET MVC搭建專案後臺UI框架—9、伺服器端排序

關於jquery datables的在伺服器端的排序,在網上貌似沒有看到.NET的例子,說實話,之前我也迷惑過,習慣了直接從網上找現成的東西,經過一翻搜尋,沒找到,於是乎,自己除錯唄,調了前臺,調後臺,還真被我看出了規律。事實上datables是支援多列排序的,但是本例,我只寫了單列排序。 在控制器