Rejestracja użytkownika, użytkownik bez nazwy i hasła

0

Przy tworzeniu rejestracji natrafiłem na problem, otóż nie mogę sobie poradzić gdy gość próbuje się zarejestrować ale nie wpisze nic i kliknie button Register tworzy się konto z pustym loginem i hasłem.

W jaki sposób obejść ten problem lub gdzie się kierować by się tego dowiedzieć?

using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Data.SqlClient;

public partial class Register : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{

}

protected void RegisterButton_Click(object sender, EventArgs e)
{
    InvalidCredentialsMessageUSERNAME.Visible = false;
    InvalidCredentialsMessagePASSWORD.Visible = false;


    if (Password.Text == ConfirmPassword.Text)
    {
        SqlConnection con = new SqlConnection(@"Data Source=ADMIN-KOMPUTER\SQL_KACPER;Initial Catalog=Shop;Integrated Security=True");

        con.Open();

        string sql = "INSERT INTO Customers(customer_id, password) VALUES ('" + UserName.Text + "' , '" + Password.Text + "')";

        SqlCommand cmd = new SqlCommand(sql, con);

        if ((Password.Text != null) && (UserName.Text != null) && (ConfirmPassword.Text != null))

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////To u góry i u dołu daje użytkownika z pustym loginem lub hasłem
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////if ((Password.Text == "") && (UserName.Text == "") && (ConfirmPassword.Text == ""))////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

        {
            cmd.ExecuteNonQuery();

            Accept.Visible = true;

        }
        else
        {
            Accept.Visible = false;
            InvalidCredentialsMessagePASSWORD.Visible = false;
            InvalidCredentialsMessageUSERNAME.Visible = true;
        }
    }
    else
        Accept.Visible = false;
        InvalidCredentialsMessageUSERNAME.Visible = false;
        InvalidCredentialsMessagePASSWORD.Visible = true;
}

}

0

nie rozumiem troche problemu. Znasz haslo (mam nadzieje ze jest zaszyfrowane) znasz uzytkownika. Jezeli nie spelnia wymagan (ktore sobie ustawisz) to mozesz przeciez zwrocic do niego odpowiednia wiadomosc i nie wykonywac SQL i nie stworzyc uzytkownika z pustymi danymi.

Mozesz sobie rzucic jakis wyjatek i go zlapac gdzies wyzej i z odpowiednim typem mozesz odpowiedni komunikat wyslac uzytkownikowi

Mozesz tez zrobic to bez rzucania wyjatkow (masz nawet co jest nie tak

1

Nie umiem za bardzo into C#, ale czy problemem nie jest przypadkiem, że puste pole tekstowe zwraca pusty string ("") a nie null? W takim przypadku przejdzie poprawie Twoją walidację bo null != "". Rzuć okiem na to: https://msdn.microsoft.com/en-us/library/system.string.isnullorempty(v=vs.110).aspx

@Edit:
Albo nawet na to:
https://msdn.microsoft.com/en-us/library/system.string.isnullorwhitespace(v=vs.110).aspx

0

jeszcze przed if(password == password) sprawdź czy login lub haslo nie jest puste lub nullem będzie to mniej więcej tak:

if(!string.isNullOrEmpty(password) && !string.isNullOrEmpty(username))
{
   // tutaj jak nie jest puste  tzn twoj if sprawdzający czy password = userpassword 
} else
{
 //tu możesz zwrócić błąd o niepodaniu hasła / loginu
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1