asp.net の 3 種類の確認コード例 (数字、数字と文字の混合、漢字)
効果は図に示すとおりです:
Default.aspx
<table> <tr> <td class="style1"> (验证码测试)</td> <td> <asp:Label ID="Label1" runat="server"></asp:Label> <asp:Image ID="Image1" runat="server" Height="22px" ImageUrl="~/ValidNums.aspx" Width="58px" /> <asp:Image ID="Image2" runat="server" Height="22px" ImageUrl="~/GetValid.aspx" Width="58px" /></td> </tr> <tr> <td class="style1"> </td> <td> <asp:Button ID="Button1" runat="server" Text="登录" OnClick="btnOK_Click" /> <asp:Button ID="Button2" runat="server" Text="取消" /> </td> </tr> </table>
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { string getNums = GetVali(); Label1.Text = getNums; } } /// <summary> /// 随机生成4位数 /// </summary> /// <returns>返回生成的随机数</returns> public string GetVali() { string strsvali = "0,1,2,3,4,5,6,7,8,9"; string[] ValiArray = strsvali.Split(','); string ReturnNum = ""; int nums = -1; Random vrand = new Random(); for (int n = 1; n < 5; n++) { if (nums != -1) { vrand = new Random(n * nums * unchecked((int)DateTime.Now.Ticks)); } int t = vrand.Next(10); nums = t; ReturnNum += ValiArray[t]; } Session["Valid"] = ReturnNum; return ReturnNum; } protected void btnOK_Click(object sender, EventArgs e) { if (Session["Valid"].ToString() == TextBox3.Text) { ClientScript.RegisterStartupScript(this.GetType(),"ss","<script>alert('您已经成功通过登录验证!')</script>"); } else { ClientScript.RegisterStartupScript(this.GetType(), "ss", "<script>alert('您输入的验证码错误!')</script>"); } } }
GetValid.aspx
(このページをソースとして ImageUrl に直接割り当てることができます)
フロントデスクは空いており、背景コードは次のとおりです:
using System; using System.Collections; using System.Configuration; using System.Data; using System.Linq; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.HtmlControls; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Xml.Linq; using System.Text; using System.Drawing; public partial class GetValid : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { string validateNum = GetValids(); //成生4位随机字符串 CreateImage(validateNum); //将生成的随机字符串绘成图片 Session["ValidNums"] = validateNum; //保存验证码 } } public static string GetValids() { //获取GB2312编码页(表) Encoding gb = Encoding.GetEncoding("gb2312"); //调用函数产生4个随机中文汉字编码 object[] bytes = CreateRegionCode(4); //根据汉字编码的字节数组解码出中文汉字 string s = String.Empty; foreach (object byt in bytes) { string str1 = gb.GetString((byte[])Convert.ChangeType(byt, typeof(byte[]))); s = s + str1; } //输出的控制台 return s; } public static object[] CreateRegionCode(int strlength) { //定义一个字符串数组储存汉字编码的组成元素 string[] rBase = new String[16] { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f" }; Random rnd = new Random(); //定义一个object数组用来 object[] bytes = new object[strlength]; /*每循环一次产生一个含两个元素的十六进制字节数组,并将其放入bject数组中 每个汉字有四个区位码组成 区位码第1位和区位码第2位作为字节数组第一个元素 区位码第3位和区位码第4位作为字节数组第二个元素 */ for (int i = 0; i < strlength; i++) { //区位码第1位 int r1 = rnd.Next(11, 14); string str_r1 = rBase[r1].Trim(); //区位码第2位 rnd = new Random(r1 * unchecked((int)DateTime.Now.Ticks) + i); //更换随机数发生器的种子避免产生重复值 int r2; if (r1 == 13) { r2 = rnd.Next(0, 8); } else { r2 = rnd.Next(0, 16); } string str_r2 = rBase[r2].Trim(); //区位码第3位 rnd = new Random(r2 * unchecked((int)DateTime.Now.Ticks) + i); int r3 = rnd.Next(10, 16); string str_r3 = rBase[r3].Trim(); //区位码第4位 rnd = new Random(r3 * unchecked((int)DateTime.Now.Ticks) + i); int r4; if (r3 == 10) { r4 = rnd.Next(1, 16); } else if (r3 == 15) { r4 = rnd.Next(0, 15); } else { r4 = rnd.Next(0, 16); } string str_r4 = rBase[r4].Trim(); //定义两个字节变量存储产生的随机汉字区位码 byte byte1 = Convert.ToByte(str_r1 + str_r2, 16); byte byte2 = Convert.ToByte(str_r3 + str_r4, 16); //将两个字节变量存储在字节数组中 byte[] str_r = new byte[] { byte1, byte2 }; //将产生的一个汉字的字节数组放入object数组中 bytes.SetValue(str_r, i); } return bytes; } //生成图片 private void CreateImage(string validateNum) { if (validateNum == null || validateNum.Trim() == String.Empty) return; //生成Bitmap图像 System.Drawing.Bitmap image = new System.Drawing.Bitmap(validateNum.Length * 12 + 10, 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.Coral), x1, y1, x2, y2); } Font font = new System.Drawing.Font("Arial", 8); 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(validateNum, font, brush, 2, 2); //画图片的前景噪音点 for (int i = 0; i < 100; 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.Silver), 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(); } } }
ValidNums .aspx
(このページをソースとして ImageUrl に直接割り当てることができます)
フロント デスクは空で、背景コードは次のとおりです:
using System; using System.Collections; using System.Configuration; using System.Data; using System.Linq; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.HtmlControls; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Xml.Linq; using System.Drawing; public partial class ValidNums : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { string validateNum = CreateRandomNum(4); //成生4位随机字符串 CreateImage(validateNum); //将生成的随机字符串绘成图片 Session["ValidNums"] = validateNum; //保存验证码 } } //生成随机字符串 private string CreateRandomNum(int NumCount) { string allChar = "0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,W,X,Y,Z"; string[] allCharArray = allChar.Split(',');//拆分成数组 string randomNum = ""; int temp = -1;//记录上次随机数的数值,尽量避免产生几个相同的随机数 Random rand = new Random(); for (int i = 0; i < NumCount; i++) { if (temp != -1) { rand = new Random(i * temp * ((int)DateTime.Now.Ticks)); } int t = rand.Next(35); if (temp == t) { return CreateRandomNum(NumCount); } temp = t; randomNum += allCharArray[t]; } return randomNum; } //生成图片 private void CreateImage(string validateNum) { if (validateNum == null || validateNum.Trim() == String.Empty) return; //生成Bitmap图像 System.Drawing.Bitmap image = new System.Drawing.Bitmap(validateNum.Length * 12 + 10, 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.Coral), x1, y1, x2, y2); } Font font = new System.Drawing.Font("Arial", 12, (System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic)); 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(validateNum, font, brush, 2, 2); //画图片的前景噪音点 for (int i = 0; i < 100; 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.Silver), 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(); } } }
上記はすべてのコードです3 つの確認コードの場合。
ashx を使用して検証コードをリクエストすることもできます。この例では、セッション値の処理のみを使用します。
asp.net の 3 種類の検証コード例 (数字、数字と文字の混合、漢字) に関するその他の関連記事については、PHP 中国語 Web サイトに注目してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック

Google Chrome で認証コードの画像が表示されない場合はどうすればよいですか? Google Chrome を使用して Web ページにログインするために確認コードが必要になる場合があります。一部のユーザーは、画像検証コードを使用すると、Google Chrome で画像のコンテンツが適切に表示されないことに気づきます。何をすべきでしょうか? Google Chromeの認証コードが表示されない場合の対処法を以下のエディターでご紹介しますので、皆様のお役に立てれば幸いです!方法の紹介: 1. ソフトウェアに入り、右上隅の「詳細」ボタンをクリックし、下のオプションリストで「設定」を選択してに入ります。 2. 新しいインターフェースに入ったら、左側の「プライバシー設定とセキュリティ」オプションをクリックします。 3. 次に、右側の「Web サイト設定」をクリックします。

携帯電話で認証コードを受信できない場合は、ネットワークの問題、携帯電話の設定の問題、携帯電話会社の問題、個人設定の問題が原因です。詳細な紹介: 1. ネットワークの問題: 携帯電話が設置されているネットワーク環境が不安定または信号が弱いため、確認コードが時間内に配信されない可能性があります; 2. 携帯電話の設定の問題: テキスト メッセージ携帯電話の音声機能が誤ってオフになったり、認証コード送信番号がブラックリストに追加され、認証コードが正常に受信されなくなったりする場合 3. 携帯電話会社側の問題、携帯電話会社側の故障や故障の可能性があります。メンテナンスにより認証コードの配信が間に合わない場合など

仮想番号は認証コードを受け取ることができ、登録時に入力した携帯電話番号が規定を満たしており、携帯電話番号が正常に接続できる限り、SMS認証コードを受け取ることができます。ただし、仮想携帯電話番号の利用には注意が必要で、Webサイトによっては仮想携帯電話番号の登録に対応していない場合があるため、正規の仮想携帯電話番号サービスプロバイダーを選択する必要があります。

PHP画像処理事例:画像の認証コード機能の実装方法 インターネットの急速な発展に伴い、認証コードはWebサイトのセキュリティを守る重要な手段の1つとなっています。認証コードとは、画像認識技術を利用して本人かどうかを判断する認証方法です。この記事では、PHPを使用して画像の認証コード機能を実装する方法とコード例を紹介します。はじめに 認証コードはランダムな文字を含む画像であり、ユーザーは認証に合格するには画像内の文字を入力する必要があります。検証コードを実装する主なプロセスには、ランダムな文字の生成と、文字を画像に描画することが含まれます。

「最も迷惑なのは、Web サイトにログインするときにさまざまな種類の奇妙な (または変態的な) 確認コードが表示されることです。」 さて、良いニュースと悪いニュースがあります。良いニュースは、AI がこれを行ってくれるということです。私の言うことが信じられないかもしれませんが、認識の困難さが増大する 3 つの実際のケースを以下に示します。 そして、これらは「Pix2Struct」と呼ばれるモデルによって得られる答えです。 これらはすべて正確で、一字一句正確ですか?一部のネチズンは「確かに、精度は私よりも優れています。」と嘆いています。では、それをブラウザのプラグインにすることはできるのでしょうか? ?はい、一部の人は次のように言いました。これらのケースは比較的単純ですが、微調整するだけで、その効果がどれほど強力になるかは想像できません。悪い知らせは、検証コードでは間もなくロボットを停止できなくなるということです。 (危ない危ない…)どうやってやるの? Pix2St

インターネットの発展やスマートフォンの普及に伴い、認証コードによるログイン機能を採用するWebサイトやアプリが増えています。認証コードログインは、セキュリティを向上させ、悪意のある攻撃を防ぐために、正しい認証コードを入力することでユーザーの本人確認を行うログイン方法です。 PHP開発において、簡易認証コードログイン機能の実装は複雑ではなく、以下の手順で完了します。データベース テーブルの作成 まず、検証コード情報を保存するテーブルをデータベースに作成する必要があります。テーブル構造には次のフィールドを含めることができます: id: 自動インクリメント主キー phon

今日は OCR アプリケーションを紹介します。ddddocr は検証コードを自動的に認識します。最初の4つのdは「daidai弟」の最初のピンインです。 [/笑い]。プロジェクトのアドレス: https://github.com/sml2h3/ddddocr。使用する場合は、pip コマンドを使用して直接インストールします (pipinstalldddddocr のみ)。 OCRの中核技術には、画像内の文字を検出する対象検出モデルと、画像内の文字をテキストに変換する文字認識モデルの2つの側面があります。最初のタイプの検証コードは最も単純で、複雑な背景画像がないため、ターゲット検出モデルを省略して、画像をテキスト認識モデルに直接送信できます。識別コードは次のとおりです。

PHPを使用して確認コードイメージを作成するにはどうすればよいですか? CAPTCHA は、ユーザーが機械ではなく人間であるかどうかを確認するために一般的に使用される方法です。 Web サイトでは、ログイン、登録、コメントなどの操作を完了するために、画像上に表示されるランダムな文字や数字を入力する必要がある認証コードの画像をよく見かけます。この記事では、PHP を使用して検証コード イメージを作成する方法と、具体的なコード例を紹介します。 1. PHPGD ライブラリ 検証コードイメージを作成するには、PHP の GD ライブラリを使用する必要があります。 GD ライブラリは、画像を処理するための拡張機能です。
