Buona giornata a tutti.
Nella pagina ho un modulo per recuperare la password e uno per effettuare la login.
Al modulo per recuperare la password è associato un "RequiredFieldValidator".
I campi della login non hanno nessun controllo iniziale verifica solo le credenziali nel DB.
Il problema sta nel fato che se io provo a lanciare la login mi intercetta il controllo che ho nel modulo per il recupero passoword e non mi fa andre avanti.
Vi posto il codice per il recupero password:
codice:
<SCRIPT LANGUAGE="C#" RUNAT="server">
public void sendPassword (Object Obj, EventArgs E) {
//Inizio script per recupero password
// Apro la connessione
String str = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("database/dzxcxzcxzcxz.mdb");
OleDbConnection cn = new OleDbConnection(str);
cn.Open();
string email = this.email.Text.Replace("'" , "''");
String sqlVerifica = "SELECT chiaveAccesso FROM iscritti WHERE email = '" + email + "'";
// Creiamo l'oggetto cmd di tipo OleDbCommand
// passando la Sql e la connessione al costruttore dell'oggetto
OleDbCommand cmdVerifica = new OleDbCommand(sqlVerifica, cn);
// Creiamo un oggetto di tipo OleDbDataReader
// Esso è assimilabile a un RecordSet con cursore di tipo forward-only in ASP tradizionale
OleDbDataReader verificaRecord = cmdVerifica.ExecuteReader();
verificaRecord.Read();
String emailVerifica = verificaRecord["chiaveAccesso"].ToString();
if (verificaRecord!= null && verificaRecord.HasRows)
{
lblMessaggioPassword.Text = "La sua password è: " + emailVerifica + "";
}
else {
lblMessaggioNoAccount.Text = "Indirizzo E-mail non presente nel database";
}
}
//Fine script per recupero password
</SCRIPT>
Questo è il relativo modulo:
E-Mail:<asp:TextBox id="email" runat="server" class="testo" Width="231px"></asp:TextBox>
*<asp:RequiredFieldValidator id="RequiredFieldValidator1" runat="server" ErrorMessage="Il campo è obbligatorio" ControlToValidate="email"></asp:RequiredFieldValidator>
</p><p class="testoContatti">*Campi Obbligatori</p>
<p class="testo">
<asp:Button runat="server" Text="Recupera la password" class="testo" onClick="sendPassword" id="recuperaPassword" />
<asp:Label id="lblMessaggioPassword" runat="server"></asp:Label><asp:Label id="lblMessaggioNoAccount" runat="server"></asp:Label>
Questo è il codice della login con rispettivo modulo:
codice:
<SCRIPT LANGUAGE="C#" RUNAT="server">
public void accessLogin (Object Obj, EventArgs E) {
string username = this.username.Text.Replace("'" , "''");
string password = this.password.Text.Replace("'" , "''");
//Componiamo la stringa di connessione
String ConnString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" +
Server.MapPath("database/xzzxzxzxzcz.mdb");
//Creiamo l'oggetto cn di tipo OleDbConnection
//passando la stringa di connessione al costruttore
OleDbConnection cn = new OleDbConnection(ConnString);
//Apriamo la connessione
cn.Open();
//Componiamo la stringa di interrogazione al database
String sql = "SELECT * FROM iscritti WHERE email = '" + username + "' AND chiaveAccesso = '" + password + "' AND stato = True";
//Creiamo l'oggetto cmd di tipo OleDbCommand
//passando la sql e la connessione al costruttore dell'oggetto
OleDbCommand cmd = new OleDbCommand(sql, cn);
//Creiamo un oggetto di tipo OleDbDataReader
//Esso è assimilabile a un RecordSet con cursore di tipo forward-only in ASP tradizionale
OleDbDataReader rdr = cmd.ExecuteReader();
//Visualizziamo i record del DataReader appena creato
rdr.Read();
String usernameLogin;
usernameLogin = username;
if(rdr.HasRows)
Response.Redirect ("loginOk.asp?username="+System.Web.HttpUtility.UrlEncode(usernameLogin)+"");
else
lblErroreLogin.Text = "Credeziali di accesso errate";
rdr.Close();
//Chiudiamo la connessione al database
cn.Close();
}
</SCRIPT>
Username:
<asp:Textbox id="username" runat="server" class="testo" size="26"/>
Password:
<asp:Textbox id="password" runat="server" class="testo" size="26"/>
<asp:button Text="Invia" onClick="accessLogin" id="Send" runat="server" class="testo"/>
<asp:Label id="lblErroreLogin" runat="server"></asp:Label>
Recupera la password
Separatamente funzionano, in coppia invece possamo dire che funziona solo la procedura per recuperare la password.
Potete fornirmi qualche suggerimento?