مشکل ثبت کاربر تکراری - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

مشکل ثبت کاربر تکراری

0 امتیاز

سلام ؛ اشکال این کد چیه؟ منو دیونه کرده!!


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


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

    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        string strcon = "Data Source=DANI;Initial Catalog=pic_gallery;Integrated Security=True";
        SqlConnection con = new SqlConnection(strcon);

        if (TextBox1.Text == "" || TextBox2.Text == "" || TextBox3.Text == "")
        {

            Label5.Text = "لطفا فیلد های زیر را پر کنید";
            Label5.ForeColor = Color.Red;
            Label5.Visible = true;
        }
        else
        {
            if(TextBox2.Text == TextBox3.Text )
            {
                SqlDataAdapter da = new SqlDataAdapter("Select username From userTBL Where username=" + TextBox1.Text , strcon);
                DataTable dt = new DataTable();
                da.Fill(dt);
                if (dt.Rows.Count > 0)
                {
                     Label5.Text = "این نام کاربری موجود است";
                     Label5.ForeColor = Color.Red;
                     Label5.Visible = true;
                }

                else
                {

                SqlCommand com = new SqlCommand("insert into userTBL (username,password,email) values ('" + TextBox1.Text + "','" + TextBox2.Text + "','" + TextBox4.Text + "')", con);
                con.Open();
                com.ExecuteNonQuery();
                con.Close();
                Label5.Text = "ثبت نام با موفقیت انجام شد";
                Label5.ForeColor = Color.Green;
                Label5.Visible = true;

                }
               
            }
            else
            {
                Label5.Text = "پسورد ها یکی نیستند";
                Label5.ForeColor = Color.Red;
                Label5.Visible = true;
            }
        }



       




    }


}











سوال شده اردیبهشت 26, 1394  بوسیله ی daniyaltjm (امتیاز 840)   47 88 103
ویرایش شده اردیبهشت 26, 1394 بوسیله ی daniyaltjm
لطفا کمک کنید خیلی ضروریه....
کمک کنید جای دوری نمیره بابا

2 پاسخ

+1 امتیاز

اولا سلکتو داری اشتباه میزنی

string.format("select * from tbl where username='{0}",username)

بعدشم مشکل یا ارورتو بگو

تازشم باید وردیاتو هم اسکیپ کنی برای امنیت که نکردی

پاسخ داده شده اردیبهشت 28, 1394 بوسیله ی Fire360Boy (امتیاز 2,524)   6 24 43
اسکیپ چیه؟ نه بابا امنیت نمی خواد برای پروژه صفحات وب دارم میسازم
+1 امتیاز

سلام.

شما به جای خط 34 از:

                    SqlDataAdapter da = new SqlDataAdapter("Select username From userTBL Where username= N'" + TextBox1.Text+"'", strcon);

استفاده کنید.

و نوع فیلدهاتون رو از جنس یونیکد بگیرید تا اطلاعات فارسی شما به صورت علامت سوال ذخیره نشه، بهتره که قبل از مقادیر ارسالی به جدول یک N بزرگ قرار بدین(برای سازگاری با یونیکد)

مثلا برای ثبت اطلاعات:

به جای

                        SqlCommand com = new SqlCommand("insert into userTBL (username,password,email) values ('" + TextBox1.Text + "','" + TextBox2.Text + "','" + TextBox3.Text + "')", con);

از

                        SqlCommand com = new SqlCommand("insert into userTBL (username,password,email) values (N'" + TextBox1.Text + "',N'" + TextBox2.Text + "',N'" + TextBox3.Text + "')", con);

استفاده کنید

و اگر مقدار فیلد پسورد شما عدد صحیح بود نیازی به تک کتیشن نیست.

و یه نکته هم اینکه شما در خط 34 مقدار تکست باکس4 رو ذخیره کردید احیانا نمیخواستید مقدار تکست باکس3 رو ذخیره کنید

پاسخ داده شده اردیبهشت 28, 1394 بوسیله ی java (امتیاز 40)   2 4 5
...