


Haha, ça fait longtemps que ça n'a pas été posté. Finalement, j'ai vu que cliquer sur le code de vérification était intéressant, alors j'ai eu envie d'en écrire un moi-même.
D'abord les rendus
Si vous êtes attiré par cet effet, continuez à lire.
Laissez-moi vous donner quelques idées avant de poster le code :
1 Il doit y avoir une bibliothèque de caractères chinois et la classer selon les glyphes. (J'ai classé les radicaux dans la base de données)
2. Obtenez le code de vérification (c'est-à-dire prenez quelques mots pour créer le code de vérification)
3. en fonction de Trouvez les mots avec des formes similaires
4. Organisez le texte du code de vérification et les mots avec des formes similaires
5. Dessinez des images
/// <summary> /// 获取验证码 /// </summary> public List<VerificationCode.Model.WenZhi> GetCodeText() { const string sql = "SELECT * FROM wenzhi ORDER BY RAND() LIMIT 4"; var dataReader = dbHelper.GetDataReader(sql); var list = DataReaderToList(dataReader); dataReader.Close(); return list; }3. Trouvez des mots similaires en fonction du texte extrait
/// <summary> /// 获取答案备选 /// </summary> /// <param name="buShouCode">部首编码</param> /// <param name="id">当前文字ID</param> /// <param name="number">数量</param> /// <returns></returns> public List<VerificationCode.Model.WenZhi> GetAnswer(string buShouCode, int id,int number=1) { string sql = $"SELECT * FROM wenzhi where BuShouCode='{buShouCode}' and ID <> {id} ORDER BY RAND() LIMIT "+ number; var dataReader = dbHelper.GetDataReader(sql); var list = DataReaderToList(dataReader); dataReader.Close(); return list; }4. Organisez le texte du code de vérification et les mots similaires
public Model.Code GetCode() { var wenzlist = _wenZhiDal.GetCodeText(); //获取验证码 var listAnsuwr = new List<Answer>();//实例化备选答案对象 var answerCode = string.Empty;//答案 var result = new Model.Code { Id = Guid.NewGuid().ToString() }; //根据验证码获取备选答案并把添加到答案添加到备选答案集合 foreach (var item in wenzlist) { answerCode += item.ID + ","; result.AnswerValue += item.Text; var answerList = _wenZhiDal.GetAnswer(item.BuShouCode, item.ID); listAnsuwr.Add(new Answer { Id = item.ID.ToString(), Img = GetImage(item.Text) }); listAnsuwr.AddRange(answerList.Select(answer => new Answer { Id = answer.ID.ToString(), Img = GetImage(answer.Text) })); } //如果答案个数不够就再去取几个 if (listAnsuwr.Count < 9) { var ran = new Random(); var randKey = ran.Next(0, 4); var item = wenzlist[randKey]; var answerList = _wenZhiDal.GetAnswer(item.BuShouCode, item.ID, 9 - listAnsuwr.Count); listAnsuwr.AddRange(answerList.Select(answer => new Answer { Id = answer.ID.ToString(), Img = GetImage(answer.Text) })); } result.CodeImg = GetImage(result.AnswerValue);//获取图片 result.AnswerValue = answerCode.TrimEnd(','); result.Answer = RandomSortList(listAnsuwr);//打乱正确答案与形近字的顺序 return result; }C'est le code pour trier la collection
/// <summary> /// 随机排列集合 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="listT"></param> /// <returns></returns> private static List<T> RandomSortList<T>(IEnumerable<T> listT) { var random = new Random(); var newList = new List<T>(); foreach (var item in listT) { newList.Insert(random.Next(newList.Count + 1), item); } return newList; }5. Dessinez l'image
private static string GetImage(string text) { Image image; switch (text.Length) { case 1: image = new Bitmap(50, 40); break; case 4: image = new Bitmap(120, 40); break; default: image = new Bitmap(50, 40); break; } Brush brushText = new SolidBrush(Color.FromArgb(255, 0, 0, 0)); var graphics = Graphics.FromImage(image); graphics.SmoothingMode = SmoothingMode.AntiAlias; graphics.Clear(Color.White); var font = new Font(new FontFamily("华文彩云"), 20, FontStyle.Regular); if (text.Length > 1)//画验证码 { //先来两条直线做干扰 然后再画文字 graphics.DrawLine(new Pen(brushText, new Random().Next(1, 3)), new Point(new Random().Next(0, 10), new Random().Next(10, 40)), new Point(new Random().Next(100, 120), new Random().Next(10, 30))); graphics.DrawLine(new Pen(brushText, new Random().Next(1, 3)), new Point(new Random().Next(20, 50), new Random().Next(0, 10)), new Point(new Random().Next(100, 120), new Random().Next(30, 40))); graphics.DrawString(text, font, brushText, 0, 10); } else//画备选答案 { Point middle = new Point(25, 20); graphics.TranslateTransform(middle.X, middle.Y); //这里是360°随机旋转 graphics.RotateTransform(new Random().Next(0, 360)); var format = new StringFormat(StringFormatFlags.NoClip) { Alignment = StringAlignment.Center, LineAlignment = StringAlignment.Center }; graphics.DrawString(text, font, brushText, 0, 0, format); } brushText.Dispose(); graphics.Dispose(); return ImageToBase64(image); }6. Affichage
public string GetVerCode() { var code = new VerificationCode.Code().GetCode(); Session["VERCODE"] = code.AnswerValue; code.AnswerValue = ""; return JsonConvert.SerializeObject(code); }Maintenant, empilons du code html
<div class="form-group"> <ul class="vercode"> <li><img src=''/ alt="asp.net cliquez sur les idées de mise en œuvre du code de vérification" ></li> <li><img src=''/ alt="asp.net cliquez sur les idées de mise en œuvre du code de vérification" ></li> <li><img src=''/ alt="asp.net cliquez sur les idées de mise en œuvre du code de vérification" ></li> <li><img src=''/ alt="asp.net cliquez sur les idées de mise en œuvre du code de vérification" ></li> <li class="delete" onclick="delete_input()"></li> </ul> <div> <img id="code-image"/ alt="asp.net cliquez sur les idées de mise en œuvre du code de vérification" > <a href="javascript:void(0);" onclick="load_vercode()">看不清?</a> </div> <ul class="vercode-anwser"> <li><img / alt="asp.net cliquez sur les idées de mise en œuvre du code de vérification" ></li> <li><img / alt="asp.net cliquez sur les idées de mise en œuvre du code de vérification" ></li> <li><img / alt="asp.net cliquez sur les idées de mise en œuvre du code de vérification" ></li> <li><img / alt="asp.net cliquez sur les idées de mise en œuvre du code de vérification" ></li> <li><img / alt="asp.net cliquez sur les idées de mise en œuvre du code de vérification" ></li> <li><img / alt="asp.net cliquez sur les idées de mise en œuvre du code de vérification" ></li> <li><img / alt="asp.net cliquez sur les idées de mise en œuvre du code de vérification" ></li> <li><img / alt="asp.net cliquez sur les idées de mise en œuvre du code de vérification" ></li> <li><img / alt="asp.net cliquez sur les idées de mise en œuvre du code de vérification" ></li> </ul> </div>Ajoutons du code js Ici, nous ne réalisons que l'effet sur l'image, et nous n'avons pas encore vérifié les données. (voici l'idée de vérification : Chaque image correspond à un identifiant. Récupérez les identifiants des images sélectionnées séparés par des virgules, puis comparez-les avec les valeurs de la Session)
<script> $(function () { //加载验证码 load_vercode(); //绑定验证码点击事件 $(".vercode-anwser").find("img").on("click", null, function () { $(".vercode").find("img[src='']:eq(0)").attr("src", $(this).attr("src")); }); }); function load_vercode() { $(".vercode").find("img").attr("src", ""); $.get("GetVerCode", function (data) { var result = JSON.parse(data); $("#code-image").attr("src", "data:image/png;base64," + result.CodeImg); $(".vercode-anwser").find("img").each(function (index) { $(this).attr("src", "data:image/png;base64," + result.Answer[index].Img); }); }); } //删除事件 function delete_input() { $(".vercode").find("img[src!='']:last").attr("src", ""); } </script>Le code est presque la même chose à ce stade. Les idées ci-dessus ne sont que mes pensées personnelles. Discutons-en avec des amis intéressés. Ce qui précède représente l'intégralité du contenu de cet article. J'espère qu'il sera utile à l'apprentissage de chacun. J'espère également que tout le monde soutiendra le site Web PHP chinois. Pour plus d'articles liés aux idées d'implémentation du code de vérification des clics asp.net, veuillez faire attention au site Web PHP chinois !

C # et .NET offrent des fonctionnalités puissantes et un environnement de développement efficace. 1) C # est un langage de programmation moderne et orienté objet qui combine la puissance de C et la simplicité de Java. 2) Le Framework .NET est une plate-forme pour créer et exécuter des applications, en prenant en charge plusieurs langages de programmation. 3) Les classes et les objets en C # sont le cœur de la programmation orientée objet. Les classes définissent les données et les comportements, et les objets sont des instances de classes. 4) Le mécanisme de collecte des ordures de .NET gère automatiquement la mémoire pour simplifier le travail des développeurs. 5) C # et .NET fournissent des fonctions de fonctionnement de fichiers puissantes, prenant en charge la programmation synchrone et asynchrone. 6) Les erreurs courantes peuvent être résolues via le débogueur, l'exploitation forestière et la gestion des exceptions. 7) L'optimisation des performances et les meilleures pratiques incluent l'utilisation de StringBuild

.NetFramework est une plate-forme de développement multiplateforme multi-langues qui fournit un modèle de programmation cohérent et un environnement d'exécution puissant. 1) Il se compose de CLR et FCL, qui gère la mémoire et les threads, et FCL fournit des fonctions pré-construites. 2) Les exemples d'utilisation incluent la lecture des fichiers et des requêtes LINQ. 3) Les erreurs courantes impliquent des exceptions non gérées et des fuites de mémoire et doivent être résolues à l'aide d'outils de débogage. 4) L'optimisation des performances peut être obtenue grâce à la programmation et à la mise en cache asynchrones, et le maintien de la lisibilité et de la maintenabilité du code est la clé.

Les raisons pour lesquelles C # .NET reste durable comprennent ses excellentes performances, son écosystème riche, son soutien communautaire solide et ses capacités de développement multiplateforme. 1) Excellentes performances et convient à l'application au niveau de l'entreprise et au développement de jeux; 2) Le Framework .NET fournit une large gamme de bibliothèques de classe et d'outils pour prendre en charge une variété de domaines de développement; 3) Il a une communauté de développeurs active et des ressources d'apprentissage riches; 4) .netcore réalise le développement multiplateforme et élargit les scénarios d'application.

Les motifs de conception en C # .NET incluent les modèles singleton et l'injection de dépendance. 1.Singleton Mode garantit qu'il n'y a qu'une seule instance de la classe, qui convient aux scénarios où les points d'accès mondiaux sont nécessaires, mais l'attention doit être accordée aux problèmes de sécurité et d'abus. 2. L'injection de dépendance améliore la flexibilité du code et la testabilité en injectant les dépendances. Il est souvent utilisé pour l'injection de constructeur, mais il est nécessaire d'éviter une utilisation excessive pour augmenter la complexité.

C # .NET est largement utilisé dans le monde moderne dans les domaines du développement de jeux, des services financiers, de l'Internet des objets et du cloud computing. 1) Dans le développement de jeux, utilisez C # pour programmer via le moteur Unity. 2) Dans le domaine des services financiers, C # .NET est utilisé pour développer des systèmes de trading haute performance et des outils d'analyse des données. 3) En termes d'IoT et de cloud computing, C # .NET fournit la prise en charge des services Azure pour développer la logique de contrôle des périphériques et le traitement des données.

.Netframeworkiswindows-centric, while.netcore / 5/6Supportscross-plateformDevelopment.1) .netframework, puisque 2002, iSidealForwindowsApplications butlimitedIncross-PlateformCapabilities.2) .NetCore, à partir de 2016, AnditseVolutions (.Net5 / 6) offrantbetterperperper, Cross-witsevolutions (.Net5 / 6) offrantbetterperperper, Cross-wit-,.

La communauté C # .NET Developer fournit des ressources et un soutien riches, notamment: 1. Documents officiels de Microsoft, 2. Forums communautaires tels que Stackoverflow et Reddit, et 3. Projets open source sur GitHub. Ces ressources aident les développeurs à améliorer leurs compétences en programmation de l'apprentissage de base aux applications avancées.

Les avantages de C # .NET comprennent: 1) les fonctionnalités linguistiques, telles que la programmation asynchrone simplifie le développement; 2) Performance et fiabilité, améliorant l'efficacité par le biais de mécanismes de compilation JIT et de collecte des ordures; 3) Prise en charge multiplateforme, .Netcore étend les scénarios d'application; 4) Un large éventail d'applications pratiques, avec des performances exceptionnelles du Web au bureau et au développement de jeux.


Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

SublimeText3 Linux nouvelle version
Dernière version de SublimeText3 Linux

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Version Mac de WebStorm
Outils de développement JavaScript utiles

MinGW - GNU minimaliste pour Windows
Ce projet est en cours de migration vers osdn.net/projects/mingw, vous pouvez continuer à nous suivre là-bas. MinGW : un port Windows natif de GNU Compiler Collection (GCC), des bibliothèques d'importation et des fichiers d'en-tête librement distribuables pour la création d'applications Windows natives ; inclut des extensions du runtime MSVC pour prendre en charge la fonctionnalité C99. Tous les logiciels MinGW peuvent fonctionner sur les plates-formes Windows 64 bits.

Dreamweaver CS6
Outils de développement Web visuel
