|
Introduction
In this post, I am explain how to use google recaptcha in asp.net.Google reCAPTCHA is a free service from Google that helps protect websites from spam and abuse that restricts the automated input sent by a system and allows only input from a real human.
We can create a CAPTCHA in many ways but Google provides a free reCAPTCHA with better security without any cost.
Let us learn about how to use google recaptcha in asp.net
Steps :
Step - 1 : Create New Project.
Go to File > New > Project > Select asp.net web forms application > Entry Application Name > Click OK.Step-2: Sign up & Generate Key for Google reCaptcha.
Go to http://www.google.com/recaptcha > Sign up for Google reCaptcha > Create Key(for Google reCaptcha).Step-3: Add a Database.
Go to Solution Explorer > Right Click on App_Data folder > Add > New item > Select SQL Server Database Under Data > Enter Database name > Add.Step-4: Create table for Save Data.
Open Database > Right Click on Table > Add New Table > Add Columns > Save > Enter table name > Ok.Step-5: Add Entity Data Model.
Go to Solution Explorer > Right Click on Project name form Solution Explorer > Add > New item > Select ADO.net Entity Data Model under data > Enter model name > Add.A popup window will come (Entity Data Model Wizard) > Select Generate from database > Next >
Chose your data connection > select your database > next > Select tables > enter Model Namespace > Finish.
Step-6: Add a Webpage and Design for use Google Captcha.
Go to Solution Explorer > Right Click on Project name form Solution Explorer > Add > New item > Select web form/ web form using master page under Web > Enter page name > Add.HTML Code
<h3>Contact Us form in ASP.NET with Google Captcha</h3> <div> <table> <tr> <td>Full Name:</td> <td> <asp:TextBox ID="txtFullName" runat="server" /> </td> </tr> <tr> <td>Email:</td> <td> <asp:TextBox ID="txtEmail" runat="server" /> </td> </tr> <tr> <td>Contact No:</td> <td> <asp:TextBox ID="txtContactNo" runat="server" /> </td> </tr> <tr> <td>Query</td> <td> <asp:TextBox ID="txtQuery" runat="server" TextMode="MultiLine" Height="66px" Width="297px" /> </td> </tr> <tr> <td>Security Code</td> <td> <%-- We Can get the code from : https://developers.google.com/recaptcha/docs/display --%> <%-- Here Please place you public key(google captcha public key) your_public_key--%> <%-- Here Please place you public key(google captcha public key) your_public_key--%> <script type="text/javascript" src="http://www.google.com/recaptcha/api/challenge?k=your_public_key"> </script> <noscript> <iframe src="http://www.google.com/recaptcha/api/noscript?k=your_public_key" height="300" width="500" frameborder="0"></iframe><br> <textarea name="recaptcha_challenge_field" rows="3" cols="40"> </textarea> <input type="hidden" name="recaptcha_response_field" value="manual_challenge"> </noscript> </td> </tr> <tr> <td></td> <td> <asp:Button ID="btnSubmit" runat="server" Text="Submit" OnClick="btnSubmit_Click" /> </td> </tr> <tr> <td> </td> <td> <asp:Label ID="lblMsg" runat="server" ></asp:Label> </td> </tr> </table> </div>
Step-7: Write this into Button Click event for validate captcha & Save data to database.
protected void btnSubmit_Click(object sender, EventArgs e) { if (txtFullName.Text.Trim() == "") { lblMsg.Text = "Please provide your full name"; return; } // here we will check captcha code is valid or not var isValidDic = CaptchaValidate(); string val = ""; try { isValidDic.TryGetValue(true, out val); if (val == null) { lblMsg.Text = "provided security code is not valid! please try again."; return; } } catch (Exception ex) { lblMsg.Text = "provided security code is not valid! please try again."; return; } ContactQuery c = new ContactQuery { Fullname = txtFullName.Text.Trim(), EmailID = txtEmail.Text.Trim(), ContactNo = txtContactNo.Text.Trim(), Query = txtQuery.Text.Trim() }; // here MyDatabaseEntities is dbContext using (MyDatabaseEntities dc = new MyDatabaseEntities()) { dc.ContactQueries.Add(c); dc.SaveChanges(); lblMsg.Text = "Successfully Done!"; txtFullName.Text = ""; txtEmail.Text = ""; txtContactNo.Text = ""; txtQuery.Text = ""; } }
private Dictionary<bool,string> CaptchaValidate() { // Validate Captcha here var isValidDic = new Dictionary<bool, string>(); string[] resultFromGoogle; HttpWebRequest req = (HttpWebRequest)WebRequest.Create("http://www.google.com/recaptcha/api/verify"); req.ProtocolVersion = HttpVersion.Version10; req.Timeout = 0x7530; req.Method = "POST"; req.UserAgent = "reCAPTCHA/ASP.NET"; req.ContentType = "application/x-www-form-urlencoded"; string Fdata = string.Format("privatekey={0}&remoteip={1}&challenge={2}&response={3}", new object[]{ HttpUtility.UrlEncode("your_private_key"), HttpUtility.UrlEncode(Dns.GetHostEntry(Dns.GetHostName()).AddressList[1].ToString()), HttpUtility.UrlEncode(Request.Form["recaptcha_challenge_field"]), HttpUtility.UrlEncode(Request.Form["recaptcha_response_field"]) }); byte[] resData = Encoding.ASCII.GetBytes(Fdata); using (Stream rStream = req.GetRequestStream()) { rStream.Write(resData, 0, resData.Length); } try { using (WebResponse wResponse = req.GetResponse()) { using (TextReader readStream = new StreamReader(wResponse.GetResponseStream(), Encoding.UTF8)) { resultFromGoogle = readStream.ReadToEnd().Split(new string[] { "\n", @"\n" }, StringSplitOptions.RemoveEmptyEntries); } } } catch (WebException ex) { isValidDic.Add(false, ex.InnerException.ToString()); return isValidDic; } isValidDic.Add(resultFromGoogle[0] == "true", resultFromGoogle[1]); return isValidDic; }
Step-8: Run Application.
Download Live Demo
- How to create Feedback page with cascade dropdownlist in MVC4.
- How to create career page with Upload file (CV) in MVC4.
- How to create a User Registration page using asp.net mvc 4
- How to create a login page using asp.net mvc 4
- Create partial view (Usercontrol) in MVC 4.
- 2 Model in 1 View in MVC 4
- Grouping Gridview in MVC 4
- Microsoft Report in MVC 4
- How to update multiple row at once Using MVC 4 and EF (Entity framework).