Member 12605293 Ответов: 1

Вставка записи для ложных значений


Привет , я сделал проверку регистрационной формы в Javascript, и при вставке значений электронной почты она вставляет все ложные значения, не включенные в формат in.
<pre<br />
<br />
What I have tried:<br />
<br />
<pre lang="c#"><pre>lang="c#"><pre>protected void btnSub_Click(object sender, EventArgs e)<br />
        {<br />
            Page.ClientScript.RegisterStartupScript(this.GetType(), null, "getvalue();", true);<br />
            string codeBehindValue = hdnResultValue.Value;<br />
            message();<br />
            if ((txtname.Text.Length > 0) & (txtDept.Text.Length > 0) & (txtSalary.Text.Length > 0) & (txtSalary.Text.Length > 0) & (txtPhone.Text.Length > 0) & (txtPin.Text.Length > 0)) <br />
            {<br />
                cn.Open();<br />
                <br />
                SqlCommand cmd = new SqlCommand("INSERT INTO FormRegistration1 (Name, Department,Salary,DOJ,DOB, Age,Country,Stat,Phone,Email,Pincode)  VALUES ('" + txtname.Text + "','" + txtDept.Text + "','" + txtSalary.Text + "','" + txtDate.Text + "','" + TextBox1.Text + "','" + codeBehindValue + "','" + DDlCountry.SelectedValue + "','" + Ddlstate.SelectedValue + "','" + txtPhone.Text + "','" + TxtEmail.Text + "','" + txtPin.Text + "' )", cn);<br />
<br />
                cmd.ExecuteNonQuery();<br />
                cn.Close();<br />
                <br />
                alert();<br />
            }<br />
            else { ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "alertMessage", "alert('Please fill all the details and click submit')", true); }<br />
<br />
        }</pre></pre>


мой метод

<pre>public void message()
        {
            if (txtname.Text.Length > 0)
            {
                Label1.Text = "";
            }
            else { Label1.Text = "*"; }

            if (txtDept.Text.Length > 0)
            {
                Label2.Text = "";
            }
            else { Label2.Text = "*"; }

            if (txtSalary.Text.Length > 0)
            {
                Label3.Text = "";
            }
            else { Label3.Text = "*"; }

            if (txtPhone.Text.Length > 0)
            {
                Label4.Text = "";
            }
            else { Label4.Text = "*"; }

            if (txtPin.Text.Length > 0)
            {
                Label6.Text = "";
            }
            else { Label6.Text = "*"; }

            if (TxtEmail.Text.Length > 0)
            {
                string email = TxtEmail.Text;
                Regex regex = new Regex(@"^([\w\.\-]+)@([\w\-]+)((\.(\w){2,10})+)$");
                Match match = regex.Match(email);
                if (match.Success)
                    Label5.Text = "";
                else
                    Label5.Text = "Invalid Email Format";
            }
            else 
            { 
                Label5.Text = "*"; 
            }
        }

1 Ответов

Рейтинг:
0

Peter Leow

Вы не показали код JavaScript для проверки, очевидно, он не справился с этой задачей. Этот метод message () выполняет проверку на стороне сервера, но его цель, по-видимому, просто решает, печатать ли * или нет для соответствующих меток на основе результатов отдельных проверок. Следующий оператор if повторяет то, что уже должно было быть сделано в методе message() :

if ((txtname.Text.Length > 0) & (txtDept.Text.Length > 0) & (txtSalary.Text.Length > 0) & (txtSalary.Text.Length > 0) & (txtPhone.Text.Length > 0) & (txtPin.Text.Length > 0)) 
но это утверждение if, по иронии судьбы, не включало проверку шаблона электронной почты. Вот почему он пошел вперед, чтобы выполнить операцию с базой данных, даже если электронное письмо не является действительным. Вместо этого вы могли бы сделать так, чтобы метод message() возвращал значение bool true или false, например
private bool message()
{
    bool isValid = true;

    if (txtname.Text.Trim().Length > 0)
    {
    	Label1.Text = "";
    }
    else 
    { 
	    Label1.Text = "*";
        isValid = false;
    }

    if (txtDept.Text.Trim().Length > 0)
    {
    	Label2.Text = "";
    }
    else 
    { 
	    Label2.Text = "*";
        isValid = false;
    }

    // repeat likewise to other elements

    return isValid
}
Обратите внимание, что я обрезал текстовые входные данные, чтобы избавиться от любых обучающих и завершающих пробелов. Основываясь на возвращаемом значении метода message (), затем используйте оператор if, чтобы определить, следует ли продолжать операцию с базой данных:
if (message())
{
   cn.Open()
   // your sql code
И последнее, но не менее важное: вы вводите параметр непосредственно в инструкцию sql, что рискует SQL-инъекция[^], вместо этого используйте параметризованный запрос.