PDA

View Full Version : سوال: تشخیص نام کاربری که قبلاً ثبت نام شده است



dariush110
دوشنبه 29 خرداد 1391, 15:37 عصر
سلام
چطور می توانیم وقتی شخصی که در حال ثبت نام می باشد کا اگر نام کاربری را که وارد می کند تشخیص دهیم که این نام کاربری قبلاً در سیستم بانک اطلاعاتی ثبت شده است. با تشکر

mehdin69
دوشنبه 29 خرداد 1391, 16:12 عصر
خب با یه select ساده می تونین بفهمین که آیا هست یا نه...
مثلاً دستور زیر در صورتی که طرف وجود نداشته باشه مقدار Null رو بر می گردونه و با استفاده از دستور زیر میشه کاری که شما می خواین رو انجام داد...


public static RegisterPlayer GetByNationalNo(
decimal nationalNo)
{
using (DboDataModel db = new DboDataModel())
{
var query =
from q in db.RegisterPlayer
where
q.NationalNo == nationalNo
select q;
try
{
return query.Single<RegisterPlayer>();
}
catch (Exception)
{
return null;
}
}
}



حالا توی دکمه ثبت نام اینطوری بنویسین



if (RegisterPlayer.GetByNationalNo(decimal.Parse(txtN ationalCode.Text)) == null)
}

{


راه های دیگه هم اگه باشه فقط طرز کد نویسیشون فرض داره اما راه حلش اینه که یه select از دیتابیس انجام بدید...
ضمناً کد فوق داره بررسی می کنه آیا یه کد ملی قبلاً ثبت نام کرده با خیر
موفق باشین

majesticsoft
دوشنبه 29 خرداد 1391, 17:26 عصر
قبل از اینکه دستور ثبت نام کاربر رو اجرا کنید می توانید با یه دستور select تمامی نام کاربری های جدولت رو نگاه کنی و با textbox مربوط به نام کاربری مقایسه کنی.
اگه چنین کاربری بود با یه پیغام مناسب از ثبت چنین نام کاربری جلوگیری می کنی.( مثل چیزی که آقا/خانم mahdin69 نوشتن)
من پیشنهاد میکنم نام کاربری رو ایمیل قرار دهید

dariush110
یک شنبه 22 مرداد 1391, 16:06 عصر
سلام با تشکر از دوستان میتونید بیشتر کمکم کنید. گیج شدم

download69
یک شنبه 22 مرداد 1391, 16:35 عصر
سلام با تشکر از دوستان میتونید بیشتر کمکم کنید. گیج شدم
نگاه کن عزیز
توی کامند عضویت قبل از صادر شدن دستور عضویت با یک سلکت ساده از تیبل میتونی بفهمی که کاربر عضو شده یا نه
دستور سلکت مثلا میتونه مثل زیر باشه :


SELECT [username] from tblregister where username='"+txtusername.Text+"'"

که اگر دیتا ریدر یوزر رو خوند بگه که یوزر وجود داره و درغیر این صورت رجیستر شه
یک نم.نه کد هم واست میزارم :
VB:
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim strconn As String = "server=.\SQLEXPRESS;AttachDbFilename=|DataDirector y|\Database.mdf;Integrated Security=True;User Instance=True"
Dim sqlconn As New SqlConnection(strconn)
Dim strsql As String = "select [username] from tbluser where username='" + txtuser.Text + "'"
Dim sqlcmd As New SqlCommand
Dim signup As String
sqlconn.Open()
sqlcmd.CommandText = strsql
sqlcmd.Connection = sqlconn
Dim dr As SqlDataReader
dr = sqlcmd.ExecuteReader()
If dr.Read Then
l1.Text = "نام کاربری وجود دارد و قابل ثبت برای شما نیست"
l1.ForeColor = Drawing.Color.Red
Else

SqlDataSource1.Insert()
l1.Text = "ثبت نام شما با موفقیت انجام شد"
End If

hadidan
یک شنبه 22 مرداد 1391, 21:43 عصر
به نظرم همین روش که دوستمون گفت رو از طریق ای جکس انجام بدید، بهتره! چون وقتی فردی فرم رو پر میکنه و بعد از زدن دکمه ثبت نام میبینه نام کاربریش وجود داره ، کمی خسته کننده هستش!
شما TextBox یوزرنیم رو در داخل Update panel قرار بده و بعد مشخصه AutoPostback رو True قرار بده و بعد در رویداد TextChange از همین کد دوستمون استفاده کن. با اینکار وقتی کاربر میخواهد فلیدهای دیگر رو پر کند بلافاصله نام کاربریش هم چک میشود.

موفق باشید.

aliblue
دوشنبه 23 مرداد 1391, 10:40 صبح
به نظرم همین روش که دوستمون گفت رو از طریق ای جکس انجام بدید، بهتره! چون وقتی فردی فرم رو پر میکنه و بعد از زدن دکمه ثبت نام میبینه نام کاربریش وجود داره ، کمی خسته کننده هستش!
شما TextBox یوزرنیم رو در داخل Update panel قرار بده و بعد مشخصه AutoPostback رو True قرار بده و بعد در رویداد TextChange از همین کد دوستمون استفاده کن. با اینکار وقتی کاربر میخواهد فلیدهای دیگر رو پر کند بلافاصله نام کاربریش هم چک میشود.

موفق باشید.

این روش خوبیه ولی یه سوال دارم.اگه مثلا کاربر با موبایل بخواد ثبت نام کنه که از Ajax پشتیبانی نمیکنه؟چه اتفاقی میفته،کل صفحه postback میشه و بررسی انجام میشه،یا بدون هیچ عملی و بررسی کردن این که تکراریه یا نه ثبت میشه؟
اگه جواب اول درسته،در صورتی که رویداد TextChange اتفاق بیفته و صفحه بخواد رفرش بشه،ولی کاربر Stop مرورگر رو بزنه،اگه رو دکمه ثبت کلیک کنه،فکر کنم بررسی انجام نمیشه چون کد بررسی در رویداد TextChange بوده ولی توی رویداد کلیک دکمه نیست.

hadidan
دوشنبه 23 مرداد 1391, 11:00 صبح
این روش خوبیه ولی یه سوال دارم.اگه مثلا کاربر با موبایل بخواد ثبت نام کنه که از Ajax پشتیبانی نمیکنه؟چه اتفاقی میفته،کل صفحه postback میشه و بررسی انجام میشه،یا بدون هیچ عملی و بررسی کردن این که تکراریه یا نه ثبت میشه؟
اگه جواب اول درسته،در صورتی که رویداد TextChange اتفاق بیفته و صفحه بخواد رفرش بشه،ولی کاربر Stop مرورگر رو بزنه،اگه رو دکمه ثبت کلیک کنه،فکر کنم بررسی انجام نمیشه چون کد بررسی در رویداد TextChange بوده ولی توی رویداد کلیک دکمه نیست.

من امتحان نکردم ولی فکر کنم اگر قابلیت ای جکس نیاشه وقتی رویداد TextChange رخ بده کل صفحه رفرش میشه و عمل مقایسه بدون ای جکس انجام میشه. خب اگر فرض شما هم درست باشه، خب کاری نداره تو رو رویداد کلیک هم برای اطمینان این کد رو قرار بده.(ولی فکر نکنم لازم باشه!)

mehdi_gerami65
دوشنبه 23 مرداد 1391, 12:23 عصر
یه روش من میکم نیاز به دوبا چک کردن نیست تو بانک اطلاعاتی نام کاربری خودتو یونیک کن بعد از اینکه فرم برای ثبت ارسال میشه اگه نام کاربری یکسان باسه یه خطا میده اون خطا رو بگیر و خطا هم در مورد یکسان بودن نام کاربری بعد از دیدن اون یه ÷یغام بده که نام کاربری یکسان میباشد

hadidan
دوشنبه 23 مرداد 1391, 15:20 عصر
یه روش من میکم نیاز به دوبا چک کردن نیست تو بانک اطلاعاتی نام کاربری خودتو یونیک کن بعد از اینکه فرم برای ثبت ارسال میشه اگه نام کاربری یکسان باسه یه خطا میده اون خطا رو بگیر و خطا هم در مورد یکسان بودن نام کاربری بعد از دیدن اون یه ÷یغام بده که نام کاربری یکسان میباشد
اصلاً قضیه کد نیست! قضیه ایجاد فرمی کاربر پسند تر هستش. خب همین کدی که خطا رو بگیره رو کجا باید بنویسه؟؟؟ اگه در دکمه ثبت نام بنویسه بازم باید یک بار پست بک بشه و صفحه رفرش میشه!
پس فرقی نمیکنه! ولی اگر با ای جکس تو رویداد TextChenge یک بار بررسی بشه دیگه لازم نیست، تو دگمه ثبت نام نوشته بشه، وکاربر قبل از زدن دکمه از صحت درست وارد کردن فیلد اطمینان داره.

موفق باشید

aliblue
دوشنبه 23 مرداد 1391, 15:29 عصر
من امتحان نکردم ولی فکر کنم اگر قابلیت ای جکس نیاشه وقتی رویداد TextChange رخ بده کل صفحه رفرش میشه و عمل مقایسه بدون ای جکس انجام میشه. خب اگر فرض شما هم درست باشه، خب کاری نداره تو رو رویداد کلیک هم برای اطمینان این کد رو قرار بده.(ولی فکر نکنم لازم باشه!)
خب اگه تو رویداد کلیک هم بذاریم،در اینصورت برای مرورگری که ajax پشتیبانی میکنه(که اکثر کاربران اینطور هستند)دوبار چک میشه،هم با ajax هم موقع کلیک.و باعث میشه که هم سرعت لود شدن صفحه برای کاربر بیشتر طول بکشه و هم در تعداد زیاد بار اضافی به سرور تحمیل میشه.

hadidan
دوشنبه 23 مرداد 1391, 16:18 عصر
دوست عزیز دو بار چک نمشه، بزارید من روشی که استفاده میکنم رو توضیح بدم:
من بقل نام کاربری یک لیبل گذاشتم که اگر نام کاربری درست باشه یک پیغامی میده و اگه درست نباشه یک پیغام دیگه! حال اگه عمل ای جکس رخ نده چی میشه؟! خب معلومه مقدار لیبل تغییر نمیکنه.
پس فق یک شرطی در زمان زدن دکمه ثبت میزارید، اگر مقدار لیبل درست بود رو نشو داد، ثبت نام بشه و اگر نادرست بودن نام کاربری رو نشون داد ثبت نام نمیشه و اگر هم لیبل هیچ مقداری نداشت، یعنی عمل بررسی نام کاربری صورت نگرفته و باید به بانک وصل بشه و نام کاربری رو بررسی کنه.

حل شد؟!
موفق باشید.

mehdi_gerami65
دوشنبه 23 مرداد 1391, 23:04 عصر
اصلاً قضیه کد نیست! قضیه ایجاد فرمی کاربر پسند تر هستش. خب همین کدی که خطا رو بگیره رو کجا باید بنویسه؟؟؟ اگه در دکمه ثبت نام بنویسه بازم باید یک بار پست بک بشه و صفحه رفرش میشه!
پس فرقی نمیکنه! ولی اگر با ای جکس تو رویداد TextChenge یک بار بررسی بشه دیگه لازم نیست، تو دگمه ثبت نام نوشته بشه، وکاربر قبل از زدن دکمه از صحت درست وارد کردن فیلد اطمینان داره.

موفق باشید


بردار من شما كدهاي جاوا اسكريپتي كه توليد ميشه دقت كردي چرا تو اي جكس از اسكريپت منيجر استفاده ميكنند بعد خودش هم تو رويداد تكس باكس من اين روش رو پيشنهاد نميكنم ولي اگه خودت قبول داري استفاده كن