PDA

View Full Version : سوال: نشان دادن اطلاعات کاربر login شده در صفحه دیگر



pouran
دوشنبه 23 اردیبهشت 1387, 13:13 عصر
سلام دوستان
من می خواهم وقتی کاربر login شد مثلا: سیستم مرواید دانشگاه آزاد وقتی دانشجوی login می شود روی لینک کارنامه کلیک می کند اطلاعات مروبط به همون دانشجو یا بروی نمایش نمرات اطلاعات مروبط به همان دانشجو را نشان بده.

من خودم می دونم که باید نام کاربری داخل یک session ذخیره بکنم.

آیا راه دیگری هم است، یا در مورد همین session یک مثال یا توضیحی بدهید

Nasim_m
دوشنبه 23 اردیبهشت 1387, 14:39 عصر
از چه روشی برای login استفاده می کنید؟

nooshin_k
دوشنبه 23 اردیبهشت 1387, 16:48 عصر
در همون صفحه login كه چك مي كني كاربرت مجاز باشه اسمش را از databaset ميگيري البته اگه كاربر مجاز باشه اطلاعاتش را داري در database و آن را در يك session قرار مي دي و در هر صفحه كه خواستي استفاده كن

pouran
دوشنبه 23 اردیبهشت 1387, 16:54 عصر
دوستان من از کلاسmembership خود asp.net استفاده می کنم

Hossein Bazyan
دوشنبه 23 اردیبهشت 1387, 17:03 عصر
سلام
با session ها یا کوکی ها خیلی راحته
هنگامی که کاربر لوگین کرد هر مشخصه ای را که میخوای در صفحات بعدی نمایش داده بشه را به یه کوکی یا یه session به شکل زیر نسبت بده


Session.Add("strUserName", UserName)
Session.Add("strAccess", dr("Access"))


و در صفحه بعد session را به شکل زیر بخوان


lblVaandag.Text = Session("DateEntry")
lblInlog.Text = Session("TimeEntry")
lblUserName.Text = Session("strUserName")


باز هم توضیحی هست ؟

pouran
دوشنبه 23 اردیبهشت 1387, 17:18 عصر
دوستان می خواهم اطلاعات شخص را در gridview یا DetailsView نشان بدهم به چه صورتی است

twelve
دوشنبه 23 اردیبهشت 1387, 17:26 عصر
ID شخص رو در سشن نگهدار و در صفحه ای که گرید داری ، بازیابی داده های کاربری رو با شرط برابر بودن ID رکورد با سشن مذکور انجام بده و گرید رو بهش بایند کن ...

pouran
دوشنبه 23 اردیبهشت 1387, 17:35 عصر
دوست عزیز twelve (http://barnamenevis.org/forum/member.php?u=25822) میشه یه مثال کامل با کدهایش را برایم بنویسی

twelve
دوشنبه 23 اردیبهشت 1387, 18:55 عصر
خب دوست من ، چطوری تو ؟! خوبی ؟ الهی شکر :لبخندساده:
حالا کمربندت رو محکم ببند که میخوایم بپریم :لبخند:

البته برای این نوع پریدن روش های زیادی وجود داره ، من با توجه به کمبود وقت و نداشتن حس کافی و متعلقات!!! یه روش کوچولوی ساده رو از حفظ نوشتم ، که فکر کنم به دردت بخوره و ان شاالله هم شما و هم آیندگان جستجو گر با خوندن این پست برداشتن گام اول براشون راحت بشه... و اما بریم که بپریم !! :قلب:


http://www.entertainmentrights.com/uploads/image_bank/jimbo_hl.jpg

1-ما یک تیبل توی دیتابیس داریم به نام Table_Users که فیلد های ID ، Username ,Password از جمله فیلدهای اونه و علاوه بر این فیلدها دیگر مشخصات کاربر هم در اون وجود داره که ما کاری بهشون نداریم ....
2- یک رویه ذخیره شده توی SQL داریم به این صورت :



CREATE PROCEDURE sp_GetUserID

@UserName nvarchar (50),
@Password nvarchar(50),
@ID int output

As

Declare @UserID int

SELECT @USERID = ID FROM TABLE_USERS WHERE USERNAME = @USERNAME
AND PASSWORD = @PASSWORD

IF @USERID IS NULL
SET @ID = -1
ELSE SET @ID = @USERID
GO




3- شما مثلا یک صفحه لاگین داری با دوتا فیلد User و Password و یک دکمه سابمیت!

توی این صفحه تابع GetUserID رو به این صورت بنویس :




Public Function GetUserID(ByVal User As String, ByVal Pass As String) As Integer

Con = New SqlConnection(ConnectionString)
Cmd = New SqlCommand("sp_GetUserID", Con)
Cmd.CommandType = CommandType.StoredProcedure

Cmd.Parameters.Add(New SqlParameter("@UserName", SqlDbType.NVarChar, 50))
Cmd.Parameters.Add(New SqlParameter("@Password", SqlDbType.NVarChar, 50))
Cmd.Parameters.Add(New SqlParameter("@ID", SqlDbType.Int))

Cmd.Parameters(0).Value = User.ToLower.ToString()
Cmd.Parameters(1).Value = Pass.ToLower.ToString()
Cmd.Parameters(2).Direction = ParameterDirection.Output


Con.Open()
Cmd.ExecuteScalar()

Con.Close()
Cmd.Dispose()

Return CInt(Cmd.Parameters(2).Value)


End Function
بعد توی روال کلیک اون دکمه سابمیت :



Private Sub Submit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Submit.Click

Dim ID As Integer = GetUserID(UserNameTextBox.Text, PasswordTextBox.Text)

If ID < 0 Then

Response.Write("Invalid User Or Password")

Else

Session.Add("UserID", ID)
Response.Redirect("UserProperties.aspx")

End If

End Sub
خب حالا اگر نام کاربری و کلمه عبور درست باشه ، میره به صفحه UserProperties که گرید در اون قرار داره ، توی این صفحه هم اینجوری روال BindGrid رو مینویسی !



Sub BindGrid()

Dim ID As Integer
ID = Session("UserID")
Dim Dr As SqlDataReader

Con = New SqlConnection(ConnectionString)
Cmd = New SqlCommand("SELECT * FROM TABLE_USERS WHERE ID = " & ID, Con)

Con.Open()
Dr = Cmd.ExecuteReader

Grid.DataSource = Dr
Grid.DataBind()


Dr.Close()
Con.Close()
Cmd.Dispose()


End Sub
بعد توی Page_Load چک میکنی که اگر سشن ID وجود داشته باشه مشخصات در گرید نمایش بده وگرنه مثلا برگرده به صفحه لاگين :



If Not Page.IsPostBack Then
If Not Session("UserID") Is Nothing Then

BindGrid()
Else
Response.Redirect("Login.aspx")
End If
End If
خب اینم از مثال کامل و جامع با کد های فراوان و در بسته بندی مخصوص ... باشد تا رستگار شوی :بامزه:

خوانندگان این پست ، امیدواریم پرش خوبی رو تجربه کرده باشید .... خدا نگهدار :لبخند:


http://www.80scartoons.co.uk/jimbo/jimbo11.jpg

Hossein Bazyan
دوشنبه 23 اردیبهشت 1387, 18:57 عصر
سلام
تکه کد زیر رو نگاه گن
من از بانک اکسس استفاده کرده ام . فقط یک کاربر با مشخصات زیر دارد
یوزر نام : bazyan1350
رمز : 1

با درست وارد کردن این مشخصات صفحه دوم باز شده و مشخصات این نفر را در گری نشان میدهد. من خطاها را کنترل نکرده ام همچنین فیلدهایی را که خودت لازم داری باید اضافه کنی.

pouran
دوشنبه 23 اردیبهشت 1387, 19:15 عصر
دوست عزیز و گرامی twelve (http://barnamenevis.org/forum/member.php?u=25822) من از کلاس Membership استفده می کنم، برای لاگین و رجیستر استفاده می کنم

twelve
دوشنبه 23 اردیبهشت 1387, 19:32 عصر
دوست عزیز و گرامی twelve (http://barnamenevis.org/forum/member.php?u=25822) من از کلاس Membership استفده می کنم، برای لاگین و رجیستر استفاده می کنم

خـــب؟؟؟!!!

twelve
سه شنبه 24 اردیبهشت 1387, 01:38 صبح
میتونی اون تابع GetUserID که در مثال قبل گفتم رو در متد OnAuthenticate کنترل لاگین به صورت زیر استفاده کنی



Sub OnAuthenticate(ByVal sender As Object, ByVal e As AuthenticateEventArgs)

Dim i as integer
i=GetUserID(Login1.User,Login1.Password)
If i > 0 then
session.Add("UserID",i)
End If

End Sub

pouran
سه شنبه 24 اردیبهشت 1387, 08:47 صبح
سلام دورست عزیز من می خواهم username در session در قرار بگیره نه userid

pouran
سه شنبه 24 اردیبهشت 1387, 08:53 صبح
برای userid من خود کدش بلدم:

Dim currentUser As MembershipUser = Membership.GetUser()
Dim currentUserId As Guid = CType(currentUser.ProviderUserKey, Guid)
e.Command.Parameters("@UserId").Value = currentUserId

دوست عزیز من می خواهمusername درsession قرار بگیره تا اطلاعات مربوط به آن کاربردر gridveiw یا DetailsView نمایش دهد.

Hossein Bazyan
سه شنبه 24 اردیبهشت 1387, 11:44 صبح
سلام
دوست عزیز هیچ فرقی نمیکنه . شما به جای اینکه اطلاعات رو در بانک بنویسید در session قرار بدید.
و از آنهم بخوانید

pouran
سه شنبه 24 اردیبهشت 1387, 11:53 صبح
دوست با این کد که خودم نوشتم با فقط با userid جواب می ده، من می خواهم اطلاعات بر اساس username نشان بده

Hossein Bazyan
سه شنبه 24 اردیبهشت 1387, 12:10 عصر
سلام
دوست عزیز من هیچ.قت از membership استفاده نکرده ام . در مورد userId و USerName هم هیچ فرقی نمیکنه شما باید دستورات sql را تغییر بدی برای اینکه از USerName به جای userId استفاده کنی.
میخوای سورس برنامه ت رو بذار تا با بقیه دوستان بهش نگاه کنیم ( البته سر وقت - من تا ساعت 5 یعنی هفت و نیم به وقت ایران ) سرکارم.

pouran
سه شنبه 24 اردیبهشت 1387, 12:13 عصر
دوست عزیز همون کاری که گفتی قبلا انجام دادم، جواب نداد

Hossein Bazyan
سه شنبه 24 اردیبهشت 1387, 12:27 عصر
سلام
من تعجب میکنم ! شاید جایی اشتباه دار میکنی. من از هر دو روش دارم استفاده میکنم بدون مشکل . میشه صفحه ای را که کدت در آن قرار دارد بفرستی شاید درست شد.

DotNet_King
سه شنبه 24 اردیبهشت 1387, 23:54 عصر
بهتره که نام کاربرت رو چک کنی بعد اگه معتبر بود ID یا username رو کدش کن و به آخر آدرست اضافه کن و بعد به اون ریدایرکت کن و تو اون صفحه دیتا هاش رو از بانک بگیر
مثلا
www.site.com/redirectedPage.aspx?username=Ali (http://www.site.com/redirectedPage.aspx?username=Ali)

golhay2
چهارشنبه 25 اردیبهشت 1387, 11:31 صبح
بهتر است کد صفحه خود را بگذاری تا بهتر راهنمائی شوی و مشکلت زودتر حل بشود

DotNet_King
پنج شنبه 26 اردیبهشت 1387, 11:45 صبح
دوست عزیز یه مثال کامل و جامع بزنی


دوستان یه کمک درست و حسابی بکنید، من آخرش این را حل نکردم

سلام دوست عزیز

ببین این کد ها کارت رو راه می اندازه!
توضیحاتش هم همون توضیحاتی است که قبلا عرض کرده بودم ، فقط باید زحمت کد کردن دیتا ها رو خودتون بکشید!

در ضمن دوست من استفاده از سیشن در بعضی مواقع نه تنها بد نیست بلکه عالی است! در ثانی روی این مسئله گیر زیادی نده و وقتت رو هدر نده!!

twelve
جمعه 27 اردیبهشت 1387, 15:40 عصر
ببين شما اصلا حاضر نيستي قدمي براي حل مشكل برداري ، فقط توقع داري ريز به ريز مشكلاتي رو كه باهاش برخورد ميكني رو ديگران برات حل كنن كه اين اصلا درست نيست ... اين همه راه حل هاي خوب امتحان شده همه دوستان در اين پست به شما دادند و شما استفاده نكرديد و و فقط ميگيد مشكل حل نشده و حتي نميگيد چرا حل نشده و خطا چيه و ... متاسفانه اين روند اصلا به موفقيت شما كمك نميكنه ، شما بايد درك درستي از برنامه نويسي داشته باشيد و متوجه اين نكته باشيد كه برنامه نويسي علاوه بر دانش اوليه خلاقيت ، جسارت درگيري با مشكلات و هنر استفاده از دانش رو هم ميطلبه و مثل word نيست كه همه مثل هم ازش استفاده كنند ( البته asp.net 2 هم مقصره !!! )
اميدوارم انتقاد پذير باشيد و از حرفام دلخور نشيد.

و اما در مورد اين مسئله خاص به زعم شما لا ينحل:‌ (كه من اصلا كاري ندارم كه از چه روشي براي لاگين استفاده مي كنيد )

مثال صفحه اول رو يه اين صورت تغيير بده :



sub BindGrid(ByVal ID As Integer)
.
.
.
Cmd=new SqlCommand(select * from [table] where id = " & ID , Con)
.
.
End Sub


توي Page_Load :



If Context.User.Identity.IsAuthenticated Then
Dim i as Integer = آي دي رو به همون روش كه گفتي بلدي به دست بيار
BindGrid(i)

Else

Response.Redirect("login.aspx")

End If


سر افراز باشيد

Hossein Bazyan
سه شنبه 07 خرداد 1387, 19:46 عصر
در این انجمن چرا کسی کمک نمی کنه

سلام
دوست عزیز ناشکری نکن . تعداد صفحات تاپیک شما به 4 رسیده ( به غیر از جوابهایی که به وسیله پیغام خصوصی بین شما و دوستان رد و بدل شده - که شاید از چهار صفحه هم بیشتر بشه ) و حداقل دو بار برنامه برای شما آپلود شده و چندین بار هم کد آپلود شده ، باز هم میفرمائید کسی کمک نمیکنه.
خود بنده دوبار برنامه آپلود کردم برات با اکسس ( من از ویزاردها استفاده نمیکنم به همین دلیل نتوانستم بیشتر برات توضیح بدم) .
این تاپیک به نظر من به نتیجه رسیده و کدهایی که دوستان قرار داده اند مشکل شما رو حل میکنه اما از این کدها شاید نتوانی استفاده کنی .
به هر حال باز هم اگر احتیاج به مطلب جدیدی باشه و از دوستان بربیاد فکر نکنم دریغ کنند.

مهدی کرامتی
دوشنبه 14 دی 1388, 19:54 عصر
تنظیمات <authentication> و <authorization> در web.config را در راهنمای ویژوال استودیو (MSDN) مطالعه کنید.