封裝的一個asp.net驗證碼類
第一個反映是驗證碼的這些屬性是否可以設定(也就是說是封裝成一個類,然後以暴露公有屬性和方法的方式來使用的,還是在直接在一般處理程序中實現了驗證碼的產生到輸出),結果比較可惜,是後者...... 裡面的演算法感覺挺不錯,至少對於我這種對演算法幾乎是不懂的人來說是這樣,於是想到去封裝她然後無恥地納入自己的類別庫中去^^
先分析一下這份程式碼中的不足(自己覺得的):
1、面向過程式的編程,如果要修改驗證碼的屬性,例如修改字體的大小、背景顏色等細節的東西,需要去一般處理程序中找到相關的程式碼,修改之。不過這份程式碼比較好,把產生驗證碼字串和產生圖片用不同的方法分開,很容易找到要修改的地方。
2、如果我想把這個功能應用到其他地方,例如winform程式中,那麼這份程式碼沒辦以一個元件(一個dll)形式被複用,而是被複製貼上然後修改...
3、沒有發現驗證碼生成之後有存起來(- -!)
當然,所謂的不足是相對而言的,就是有時間來思考然後慢慢設計一個驗證碼類的話肯定能作出一個比較不錯的類出來的,但如果是在做專案並且專案很緊急的話,這樣的程式碼其實是比較給力的,那些所謂的物件導向設計模式程式碼解耦啥的都是浮雲~~~
接下來是我對這份程式碼的修改,先確定自己要什麼樣的效果,就是說封裝起來後我希望怎樣來使用他。首先我希望在使用的時候只需要new一個驗證碼實例(需要的話可以對驗證碼的各個屬性可以任意設定),然後可以呼叫這個實例的某些方法分別以字串、流、點陣圖物件、byte陣列的形式取得到這個驗證碼(說明,這個驗證碼類別不包括把驗證碼存進上下文的功能,個人覺得產生驗證碼和把驗證碼存到上下文是兩種不同的功能,沒必要把這功能做到驗證碼類別中去)。這樣的話在一般處理程序中程式碼就變得異常簡單了,首先只要new出一個驗證碼,然後呼叫方法以字串的形式取得到這個驗證碼,然後存到上下午中,至於存在Session中或Cookie中就依照需要來了,驗證碼類別不管這些的;然後是呼叫另外一個方法以byte數組的形式取得到這個驗證碼,這樣透過context.Response.BinaryWrite()方法就可以輸出圖片了,也就是說一般處理程序中只有三句代碼。呼叫的程式碼大致如下:
/// <summary> /// 获取验证码(一般处理程序入口函数) /// </summary> /// <param name="context">当前上下文</param> public void ProcessRequest(HttpContext context) { // 创建验证码 ValidateCode validateCode = new ValidateCode(); // 获取验证码(字符串),写入Session context.Session["SomeValidateCode"] = validateCode.GetString(); // 输出验证码(图片) context.Response.BinaryWrite(validateCode.GetByteArray()); }
PS:記得剛出來工作的時候程式碼寫得很差(比現在差),一般拿到一份程式碼都是直接用,從來沒有想過是否要把程式碼修改或者封裝,那時被我的師傅教導了一次印像很深刻。個人覺得其實實用別人的代碼沒什麼不好的,一來別人用過至少證明代碼的可用性,另外智商有限,有些東西自己想破頭皮也沒有別人想的好,但是用別人的代碼一定不要盲目地拿了就用,最好根據自己的實際情況進行必要的修改或封裝,即使是簡單的隔一層也好。當然了,還是那句話,如果專案緊急的話這樣做明顯是浪費時間的,總之就是不要不思考,拿了就用,至少看把關鍵的程式碼或程式碼的整體結構弄清楚。
更封裝的一個asp.net驗證碼類相關文章請關注PHP中文網!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

在 C 語言中,char 類型在字符串中用於:1. 存儲單個字符;2. 使用數組表示字符串並以 null 終止符結束;3. 通過字符串操作函數進行操作;4. 從鍵盤讀取或輸出字符串。

C 語言中符號的使用方法涵蓋算術、賦值、條件、邏輯、位運算符等。算術運算符用於基本數學運算,賦值運算符用於賦值和加減乘除賦值,條件運算符用於根據條件執行不同操作,邏輯運算符用於邏輯操作,位運算符用於位級操作,特殊常量用於表示空指針、文件結束標記和非數字值。

C語言中通過轉義序列處理特殊字符,如:\n表示換行符。 \t表示製表符。使用轉義序列或字符常量表示特殊字符,如char c = '\n'。注意,反斜杠需要轉義兩次。不同平台和編譯器可能有不同的轉義序列,請查閱文檔。

多線程和異步的區別在於,多線程同時執行多個線程,而異步在不阻塞當前線程的情況下執行操作。多線程用於計算密集型任務,而異步用於用戶交互操作。多線程的優勢是提高計算性能,異步的優勢是不阻塞 UI 線程。選擇多線程還是異步取決於任務性質:計算密集型任務使用多線程,與外部資源交互且需要保持 UI 響應的任務使用異步。

在 C 語言中,char 和 wchar_t 的主要區別在於字符編碼:char 使用 ASCII 或擴展 ASCII,wchar_t 使用 Unicode;char 佔用 1-2 個字節,wchar_t 佔用 2-4 個字節;char 適用於英語文本,wchar_t 適用於多語言文本;char 廣泛支持,wchar_t 依賴於編譯器和操作系統是否支持 Unicode;char 的字符範圍受限,wchar_t 的字符範圍更大,並使用專門的函數進行算術運算。

在 C 語言中,char 類型轉換可以通過:強制類型轉換:使用強制類型轉換符將一種類型的數據直接轉換為另一種類型。自動類型轉換:當一種類型的數據可以容納另一種類型的值時,編譯器自動進行轉換。

char 和 unsigned char 是存儲字符數據的兩種數據類型,主要區別在於處理負數和正數的方式:值範圍:char 有符號 (-128 到 127),unsigned char 無符號 (0 到 255)。負數處理:char 可以存儲負數,unsigned char 不能。位模式:char 最高位表示符號,unsigned char 無符號位。算術運算:char 和 unsigned char 作為有符號和無符號類型,其算術運算方式不同。兼容性:char 和 unsigned char

char 數組在 C 語言中存儲字符序列,聲明為 char array_name[size]。訪問元素通過下標運算符,元素以空終止符 '\0' 結尾,用於表示字符串終點。 C 語言提供多種字符串操作函數,如 strlen()、strcpy()、strcat() 和 strcmp()。
