Ho un modulo così composto:
codice:using System; using System.Collections.Generic; using System.Linq; using System.Web.Script.Serialization; using System.Net; using System.Net.Mail; using System.Data; using System.Data.Sql; using System.Data.SqlClient; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Data.OleDb; using System.Security; using System.Security.Cryptography; using System.Runtime.Serialization; using System.Text; using System.Runtime.Serialization.Json; using System.IO; namespace MiaPagina.users { public partial class NewUser : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { } protected void btnRegister_Click(object sender, EventArgs e) { //MD5CryptoServiceProvider crypt = new MD5CryptoServiceProvider(); //byte[] HashedBytes; //UTF8Encoding encoder = new UTF8Encoding(); //HashedBytes = crypt.ComputeHash(encoder.GetBytes(txtPassword.Text)); //Codice per il controllo dell'univocità dell'username e della password SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder(); builder.DataSource = "localhost\\SQLExpress"; builder.InitialCatalog = "Mio"; builder.IntegratedSecurity = true; SqlParameter pUsername = new SqlParameter(); pUsername.ParameterName = "@Username"; pUsername.DbType = DbType.String; pUsername.Direction = ParameterDirection.Input; pUsername.Value = txtUsername.Text; SqlParameter pEmail = new SqlParameter(); pEmail.ParameterName = "@Email"; pEmail.DbType = DbType.String; pEmail.Direction = ParameterDirection.Input; pEmail.Value = txtEmail.Text; using (SqlConnection conn = new SqlConnection(builder.ConnectionString)) { try { conn.Open(); } catch (Exception excMessage) { Response.Write(excMessage.ToString()); } // Verifica univocità Username ed Email // using (SqlCommand cmqQuery = new SqlCommand("SELECT COUNT(*) FROM Tabella_Account WHERE Username=@Username OR Email=@Email", conn)) { cmqQuery.Parameters.Add(pUsername); cmqQuery.Parameters.Add(pEmail); int count = (int)cmqQuery.ExecuteScalar(); lblUsername.Text = count.ToString(); // Routine da eseguire SOLO se Username o Email non esistono// if (count == 0) { if (Validate()) { lblmsg.Text = "Valid Recaptcha"; lblmsg.ForeColor = System.Drawing.Color.Green; } else { lblmsg.Text = "Not Valid Recaptcha"; lblmsg.ForeColor = System.Drawing.Color.Red; } try { string Username = Request.Form["txtUsername"]; string Password = Request.Form["txtPassword"]; string AuthCode = Guid.NewGuid().ToString(); string IdReg = Guid.NewGuid().ToString(); string email = Request.Form["txtEmail"]; string ipReg = Request.UserHostAddress.ToString(); string dataReg = DateTime.Now.ToShortDateString(); string oraReg = DateTime.Now.ToShortTimeString(); string mailBody; string From = "no-reply@mail.it"; string oggetto = "Oggetto della mail"; string bodyMail = "Corpo del messggio"; string urlConf = "http://localhost:11058/users/FantaWitBridge.aspx?"; MailMessage mailObj = new MailMessage(From, email, Username + ", conferma la tua iscrizione al FantaWrestling", "Gentile " + txtUsername.Text + "," + "ci siamo quasi!" + "<BR>" + "Hai appena completato la prima parte d'iscrizione al <b>XXXXXXX</b>, ma, per attivare il tuo account e poter procedere, e necessario confermare l'indirizzo email inserito in fase di registrazione cliccando sul link sottoriportato:" + "<BR>" + "<a href=" + urlConf + "idReg=" + IdReg + "&AuthCode=" + AuthCode + "&" +"/>" + "clicca" + "</a>"); mailObj.IsBodyHtml = true; SmtpClient SMTPServer = new SmtpClient("localhost", 1215); SMTPServer.Send(mailObj); SqlParameter insertUsername = new SqlParameter(); insertUsername.ParameterName = "@insertUsername"; insertUsername.DbType = DbType.String; insertUsername.Direction = ParameterDirection.Input; insertUsername.Value = txtUsername.Text; SqlParameter insertEmail = new SqlParameter(); insertEmail.ParameterName = "@insertEmail"; insertEmail.DbType = DbType.String; insertEmail.Direction = ParameterDirection.Input; insertEmail.Value = txtEmail.Text; SqlParameter insertPassword = new SqlParameter(); insertPassword.ParameterName = "@insertPassword"; insertPassword.DbType = DbType.String; insertPassword.Direction = ParameterDirection.Input; insertPassword.Value = txtPassword.Text; SqlCommand cmdInsert = new SqlCommand("INSERT INTO Miatab_Account(Username, Email, Password, Status, DataReg, OraReg, IpReg, AuthCode, IdReg) VALUES(@insertUsername, @insertEmail, @insertPassword, '0', '" + dataReg + "', '" + oraReg + "', '" + ipReg + "', '" + AuthCode + "', '" + IdReg + "')", conn); SqlCommand text = new SqlCommand(""); cmdInsert.Parameters.Add(insertUsername); cmdInsert.Parameters.Add(insertEmail); cmdInsert.Parameters.Add(insertPassword); cmdInsert.ExecuteNonQuery(); } catch (Exception error) { Response.Write(error.ToString()); } } else { lblUsername.Text = "Dati già esistenti"; } } } } public bool Validate() { string Response = Request["g-recaptcha-response"];//Getting Response String Appned to Post Method bool Valid=false; //Request to Google Server HttpWebRequest req = (HttpWebRequest)WebRequest.Create(" https://www.google.com/recaptcha/api/siteverify?secret=CODICE&response=" + Response); try { //Google recaptcha Responce using (WebResponse wResponse = req.GetResponse()) { using (StreamReader readStream = new StreamReader(wResponse.GetResponseStream())) { string jsonResponse = readStream.ReadToEnd(); JavaScriptSerializer js = new JavaScriptSerializer(); MyObject data = js.Deserialize<MyObject>(jsonResponse);// Deserialize Json Valid = Convert.ToBoolean(data.success); } } return Valid; } catch (WebException ex) { throw ex; } } public class MyObject { public string success { get; set; } } } }
Il controllo recaptcha funziona correttamente, ma adesso ho una difficoltà: dovrei fare in modo che se il captcha è corretto, la pagina sia valida, altrimenti no, e quindi non venga inviata. Come posso utilizzare la proprietà IsValid?

Rispondi quotando
