salve ragazzi volevo chiedervi come si puo fare in aspnet il controllo e la verifica della username in un form. Il controllo deve essere che la username inserita dal nuovo utente non debba essere già inserita all'interno del database.
saluti
salve ragazzi volevo chiedervi come si puo fare in aspnet il controllo e la verifica della username in un form. Il controllo deve essere che la username inserita dal nuovo utente non debba essere già inserita all'interno del database.
saluti
Intendi il controllo dello username per un nuovo utente, durante la fase di registrazione?
Chi non cerca trova.
sisi...
//faccio la connessione al db
//eseguo questa query
string sql = "SELECT * FROM utenti WHERE Username = @Username";
...
E' simile alla query che usi per il login, con la differenza che qui non devi controllare la password... Una query tipo questa:
Poi con un cmd.ExecuteDataReader vedi se ti restituisce un record; se il record c'è vuol dire che c'è già un utente con quel nome.codice:SELECT * FROM Utenti WHERE Username = @username
Chi non cerca trova.
tipo questa...
ora lo provo...SqlDataReader dr;
dr = cmd.ExecuteReader();
while (dr.Read())
{
if (TextBox1.Text == dr["username"].ToString())
Label1.Text = "Username già esistente";
else
; Label1.Text = "Username disponibili si acki";
Beh, già il fatto che dr.read() restituisca true vuol dire che quel nome è già stato utilizzato, quindi il successivo if del tuo codice non serve. Io scriverei:
codice:SqlDataReader dr; dr = cmd.ExecuteReader(); if (dr.Read()) { Label1.Text = "Username già esistente"; } else { Label1.Text = "Username disponibili si acki"; }
Chi non cerca trova.
funzione verifica
ho aggiunto alla textbox di usernameprotected void verifica(object sender, EventArgs e)
{
string source = "Data Source=.\\SQLExpress;Integrated Security=True;User Instance=True;AttachDBFilename=|DataDirectory|Data base.mdf";
string sql = "SELECT * FROM utenti WHERE Username = @Username";
SqlConnection conn = new SqlConnection(source);
try
{
conn.Open();
SqlCommand cmd = new SqlCommand(sql, conn);
cmd.Parameters.Add("@Username", SqlDbType.NVarChar, 50).Value = Username.Text;
SqlDataReader dr;
dr = cmd.ExecuteReader();
if (dr.Read())
{
Label1.Text = "Username già esistente";
}
else
{
Label1.Text = "Username disponibile";
}
}
catch (SqlException sqle)
{
string c = sqle.Message;
Response.Write("Errore durante un tentativo di connessione al database");
Response.End();
}
finally
{
conn.Close();
//Response.Redirect("~/Result.aspx");
}
}
comando di AutoPostBack ="true" OnTextChanged ="verifica"
tutto bene fin qui...
la label mi stampa username gia utilizzata, ma se clicco su invio va inserire ugualmente i dati
Il controllo se il nome è duplicato va fatto anche sul pulsante Invio
Chi non cerca trova.
si ok...come posso inserirla nel codice
public partial class Register_aspx : System.Web.UI.Page {
protected void Invia_Click(object sender, EventArgs e)
{
string source = "Data Source=.\\SQLExpress;Integrated Security=True;User Instance=True;AttachDBFilename=|DataDirectory|Data base.mdf";
string sql = "INSERT INTO Utenti (nome,cognome,Username,Password,email) VALUES (@nome,@cognome,@Username,@Password,@email)";
SqlConnection conn = new SqlConnection(source);
try
{
conn.Open();
SqlCommand cmd = new SqlCommand(sql, conn);
cmd.Parameters.Add("@nome", SqlDbType.NVarChar, 50).Value = nome.Text;
cmd.Parameters.Add("@cognome", SqlDbType.NVarChar, 50).Value = cognome.Text;
cmd.Parameters.Add("@Username", SqlDbType.NVarChar, 50).Value = Username.Text;
cmd.Parameters.Add("@Password", SqlDbType.NVarChar, 50).Value = FormsAuthentication.HashPasswordForStoringInConfig File(Password.Text, "SHA1");
cmd.Parameters.Add("@email", SqlDbType.NVarChar, 50).Value = email.Text;
cmd.ExecuteNonQuery();
}
catch (SqlException sqle)
{
string c = sqle.Message;
Response.Write("Errore durante un tentativo di connessione al database");
Response.End();
}
finally
{
conn.Close();
Session.Add("Username", Username.Text);
Session.Add("Password", Password.Text);
}
}
protected void verifica(object sender, EventArgs e)
{
string source = "Data Source=.\\SQLExpress;Integrated Security=True;User Instance=True;AttachDBFilename=|DataDirectory|Data base.mdf";
string sql = "SELECT * FROM utenti WHERE Username = @Username";
SqlConnection conn = new SqlConnection(source);
try
{
conn.Open();
SqlCommand cmd = new SqlCommand(sql, conn);
cmd.Parameters.Add("@Username", SqlDbType.NVarChar, 50).Value = Username.Text;
SqlDataReader dr;
dr = cmd.ExecuteReader();
if (dr.Read())
{
Label1.Text = "Username già esistente";
}
else
{
Label1.Text = "Username disponibile";
}
}
catch (SqlException sqle)
{
string c = sqle.Message;
Response.Write("Errore durante un tentativo di connessione al database");
Response.End();
}
finally
{
conn.Close();
//Response.Redirect("~/Result.aspx");
}
}
}