|
Forums » .NET » ASP.NET »
Posted Date: 02 Aug 2008 Posted By:: venkatesan.M Member Level: Gold Member Rank: 31 Points: 1
Responses:
5
|
hi
anyone know how to implement the concept is
u have seen most registration page at there is verification code is there
like that i want to implement in asp.net
any suggestion pls
sample code..?
Thanks
Happy Friendship day..
Regards, M.Venkatesan.
For Interview Question and Answers: http://dotnet-interview-qa.blogspot.com
http://venkatdotnetexperiments.wordpress.com Dot Net Code Snippets
|
Responses
|
#275472 Author: Vidhya Member Level: Gold Member Rank: 0 Date: 02/Aug/2008 Rating:  Points: 6 | hi,
welcome....Happy friendship day
In order to create a random verification code, we create a method called CreateRandomCode at first public string CreateRandomCode(int codeCount) { 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,V,W,X,Y,Z"; string[] allCharArray = allChar.Split(','); string randomCode = ""; int temp = -1;
Random rand = new Random(); for (int i = 0; i < codeCount; i++) { if (temp != -1) { rand = new Random(i * temp * ((int)DateTime.Now.Ticks)); } int t = rand.Next(36); if (temp != -1 && temp == t) { return CreateRandomCode(codeCount); } temp = t; randomCode += allCharArray[t]; } return randomCode; }
| #275474 Author: Vidhya Member Level: Gold Member Rank: 0 Date: 02/Aug/2008 Rating:  Points: 6 | Then we generate verification code character string as exported image
private void CreateImage(string checkCode) { System.Drawing.Bitmap image = new System.Drawing.Bitmap(Convert.ToInt32(Math.Ceiling((decimal)(checkCode.Length * 14))), 22); Graphics g = Graphics.FromImage(image);
try { Random random = new Random(); g.Clear(Color.AliceBlue);
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.Silver), x1, y1, x2, y2); }
Font font = new System.Drawing.Font("Comic Sans MS", 12, 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, new SolidBrush(Color.Red), 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(); } }
Transfer function on Page_load
protected void Page_Load(object sender, EventArgs e) { string checkCode = this.CreateRandomCode(6); Session["CheckCode"] = checkCode; CreateImage(checkCode); }
| #275505 Author: venkatesan.M Member Level: Gold Member Rank: 31 Date: 02/Aug/2008 Rating:  Points: 3 | Hai suppose in a single page i will generate two verification code at that time the both will show the same verification code
but i want to show different in these verification code..?
Regards, M.Venkatesan.
For Interview Question and Answers: http://dotnet-interview-qa.blogspot.com
http://venkatdotnetexperiments.wordpress.com Dot Net Code Snippets
| #275514 Author: Ashish Shah Member Level: Gold Member Rank: 0 Date: 02/Aug/2008 Rating:  Points: 6 | Hello,
below mention code may helps you out..
private static int DEFAULT_MIN_PASSWORD_LENGTH = 8; private static int DEFAULT_MAX_PASSWORD_LENGTH = 10;
// Define supported password characters divided into groups. // You can add (or remove) characters to (from) these groups. private static string PASSWORD_CHARS_LCASE = "abcdefgijkmnopqrstwxyz"; private static string PASSWORD_CHARS_UCASE = "ABCDEFGHJKLMNPQRSTWXYZ"; private static string PASSWORD_CHARS_NUMERIC = "23456789"; private static string PASSWORD_CHARS_SPECIAL = "*$-+?_&=!%{}/";
public static string Generate(int minLength, int maxLength) { // Make sure that input parameters are valid. if (minLength <= 0 || maxLength <= 0 || minLength > maxLength) return null;
// Create a local array containing supported password characters // grouped by types. You can remove character groups from this // array, but doing so will weaken the password strength. char[][] charGroups = new char[][] { PASSWORD_CHARS_LCASE.ToCharArray(), PASSWORD_CHARS_UCASE.ToCharArray(), PASSWORD_CHARS_NUMERIC.ToCharArray(), //PASSWORD_CHARS_SPECIAL.ToCharArray() };
// Use this array to track the number of unused characters in each // character group. int[] charsLeftInGroup = new int[charGroups.Length];
// Initially, all characters in each group are not used. for (int i = 0; i < charsLeftInGroup.Length; i++) charsLeftInGroup[i] = charGroups[i].Length;
// Use this array to track (iterate through) unused character groups. int[] leftGroupsOrder = new int[charGroups.Length];
// Initially, all character groups are not used. for (int i = 0; i < leftGroupsOrder.Length; i++) leftGroupsOrder[i] = i;
// Because we cannot use the default randomizer, which is based on the // current time (it will produce the same "random" number within a // second), we will use a random number generator to seed the // randomizer.
// Use a 4-byte array to fill it with random bytes and convert it then // to an integer value. byte[] randomBytes = new byte[4];
// Generate 4 random bytes. RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider(); rng.GetBytes(randomBytes);
// Convert 4 bytes into a 32-bit integer value. int seed = (randomBytes[0] & 0x7f) << 24 | randomBytes[1] << 16 | randomBytes[2] << 8 | randomBytes[3];
// Now, this is real randomization. Random random = new Random(seed);
// This array will hold password characters. char[] password = null;
// Allocate appropriate memory for the password. if (minLength < maxLength) password = new char[random.Next(minLength, maxLength + 1)]; else password = new char[minLength];
// Index of the next character to be added to password. int nextCharIdx;
// Index of the next character group to be processed. int nextGroupIdx;
// Index which will be used to track not processed character groups. int nextLeftGroupsOrderIdx;
// Index of the last non-processed character in a group. int lastCharIdx;
// Index of the last non-processed group. int lastLeftGroupsOrderIdx = leftGroupsOrder.Length - 1;
// Generate password characters one at a time. for (int i = 0; i < password.Length; i++) { // If only one character group remained unprocessed, process it; // otherwise, pick a random character group from the unprocessed // group list. To allow a special character to appear in the // first position, increment the second parameter of the Next // function call by one, i.e. lastLeftGroupsOrderIdx + 1. if (lastLeftGroupsOrderIdx == 0) nextLeftGroupsOrderIdx = 0; else nextLeftGroupsOrderIdx = random.Next(0, lastLeftGroupsOrderIdx);
// Get the actual index of the character group, from which we will // pick the next character. nextGroupIdx = leftGroupsOrder[nextLeftGroupsOrderIdx];
// Get the index of the last unprocessed characters in this group. lastCharIdx = charsLeftInGroup[nextGroupIdx] - 1;
// If only one unprocessed character is left, pick it; otherwise, // get a random character from the unused character list. if (lastCharIdx == 0) nextCharIdx = 0; else nextCharIdx = random.Next(0, lastCharIdx + 1);
// Add this character to the password. password[i] = charGroups[nextGroupIdx][nextCharIdx];
// If we processed the last character in this group, start over. if (lastCharIdx == 0) charsLeftInGroup[nextGroupIdx] = charGroups[nextGroupIdx].Length; // There are more unprocessed characters left. else { // Swap processed character with the last unprocessed character // so that we don't pick it until we process all characters in // this group. if (lastCharIdx != nextCharIdx) { char temp = charGroups[nextGroupIdx][lastCharIdx]; charGroups[nextGroupIdx][lastCharIdx] = charGroups[nextGroupIdx][nextCharIdx]; charGroups[nextGroupIdx][nextCharIdx] = temp; } // Decrement the number of unprocessed characters in // this group. charsLeftInGroup[nextGroupIdx]--; }
// If we processed the last group, start all over. if (lastLeftGroupsOrderIdx == 0) lastLeftGroupsOrderIdx = leftGroupsOrder.Length - 1; // There are more unprocessed groups left. else { // Swap processed group with the last unprocessed group // so that we don't pick it until we process all groups. if (lastLeftGroupsOrderIdx != nextLeftGroupsOrderIdx) { int temp = leftGroupsOrder[lastLeftGroupsOrderIdx]; leftGroupsOrder[lastLeftGroupsOrderIdx] = leftGroupsOrder[nextLeftGroupsOrderIdx]; leftGroupsOrder[nextLeftGroupsOrderIdx] = temp; } // Decrement the number of unprocessed groups. lastLeftGroupsOrderIdx--; } }
// Convert password characters into a string and return the result. return new string(password); }
With Regards..
Ashish Shah India,Surat
| #275568 Author: Arun Kumar Member Level: Gold Member Rank: 754 Date: 02/Aug/2008 Rating:  Points: 3 | Thanx to Vidhya and Asish for giving a detailed explainations with code.
But how about storing verification code as image in a database and to display it in the web page randomly for every page loads??
|
|
| Post Reply |
|
|
|
 | | This thread is locked for new responses. Please post your comments and questions as a separate thread. If required, refer to the URL of this page in your new post. |
|
|
|
|
 Follow us on Twitter: https://twitter.com/dotnetspider
|
|