با سلام
من کد صفحه login.aspx رو به این صورت نوشتم:
protected void Login_Click(object sender, EventArgs e) { DAL run = new DAL(); DataTable dt = new DataTable(); string sqltext = string.Format("Select * from Tbl_Users Where (Username='{0}' or Email='{0}') And Password='{1}' And PostID=1 And Active='True'" , Username.Text, Password.Text); dt = run.ExecuteQuery(sqltext); if (dt.Rows.Count > 0) { Session.Add("useremail", dt.Rows[0]["Email"].ToString()); Session.Add("UserPassword", dt.Rows[0]["Password"].ToString()); Session.Timeout = 30; Response.Redirect("Panel.aspx?id=1"); } else Alert.InnerText = "مقادیر وارد شده صحیح نمی باشد"; }
کد صفحه Panel.aspx رو هم به این صورت نوشتم:
public void GetExist() { if (Request.QueryString["Exit"] != null) { Session.Remove("useremail"); Session.Remove("UserPassword"); Response.Redirect("login.aspx"); } } public void GetValiduser() { if (Session["useremail"] != null && Session["UserPassword"] != null) { DAL run = new DAL(); DataTable dt = new DataTable(); string sqltext = string.Format("Select * From Tbl_Users Where (Username='{0}' or Email='{0}') and Password='{1}' And PostID=1 And Active='True'" , Session["useremail"], Session["UserPassword"]); dt = run.ExecuteQuery(sqltext); if (dt.Rows.Count == 0) { Response.Redirect("Login.aspx"); } } else Response.Redirect("login.aspx"); }
توی صفحه Panel.aspx یک دیتالیست دارم:
<asp:DataList OnItemCommand="DataList2_ItemCommand" ID="DataList2" runat="server"> <ItemTemplate> <div class="HCRPicture"> <img src="<%# Eval("Picture") %>" alt="<%# Eval("Name") %>" title="<%# Eval("Name") %>" /> </div> <div class="HCRProfile"> <p><strong><%# Eval("Name") %></strong><span>عزیز خوش آمدید!</span></p> <asp:LinkButton ID="LinkButton1" CommandName="Edit" CommandArgument='<%#Eval("ID") %>' CssClass="Profile" runat="server">ویرایش پروفایل</asp:LinkButton> <a href="Panel.aspx?Exit=1" class="Exit">خروج از مدیریت</a> </div> </ItemTemplate> </asp:DataList>
و این هم کدنویسی:
public void Databind2() { DAL run = new DAL(); DataTable dt = new DataTable(); string sqlText = "select Name and Picture from Tbl_Users"; dt = run.ExecuteQuery(sqlText); DataList2.DataSource = dt; DataList2.DataBind(); } protected void DataList2_ItemCommand(object source, DataListCommandEventArgs e) { switch (e.CommandName) { case "Edit": { Response.Redirect(string.Format("Panel.aspx?id={0}&userId={1}", 2033, e.CommandArgument)); break; } } }
خروجی دیتالیست به این صورت هست:
الان هر ادمینی که لاگین کنه فرق نداره در هر صورت آخرین ادمینی که توی جدول هست اطلاعاتش رو توی دیتالیست نشون میده!
چجوری باید ID ادمین وارد شده رو ذخیره کنم؟ البته میدونم از Session باید استفاده کنم اما نمیتونم کدش رو بنویسم!
چرا سیستم رو خودتون پیاده سازی کردید و از Membership استفاده کردید ؟
استفاده زیاد از سشن اصلا مناسب نیست و منابع سرور را درگیر میکنه
علت خطای شما هم اینه که در کوئری شرط نزاشتید اطلاعات کدام کاربر را میخواهید
string sqlText = "select Name and Picture from Tbl_Users";
آخه استاد سایت کلا 3 تا مدیر داره بیشتر از این هم اصلا قرار نیست اضافه بشه!!!
میدونم باید شرط بذارم مثلا به این صورت بنویسم:
string sqlText = string.Format("Select * From Tbl_Users Where ID={0} ", Request.QueryString["userId"]);
اما نمیدونم توی صفحه لاگین چجوری userid رو ذخیره کنم که اینجا بتونم رکوئست بدم
اگر یدونه هم داره بهرته امنیت رو بسپرید به Membership
براتون خودش ID کاربر رو نگهداری میکنه
استاد من تاحالا اصلا از MemberShip استفاده نکردم
این مقاله رو خوندم که اینم کامل توضیح نداده خوب متوجه نشدم
بعضی وقتها تنظیمات session timout سرور با اسکریپتتون نمیخونه اون موقع هم ممکنه با این خطا مواجه بشید به نظرم تنظیمات سرور رو چک کنید اول و بعد اسکریپتتون مچش کنید . قطعا مشکل از کد نویسی شما نیست !
دوست عزیز الان اصلا خطایی وجود نداره!!!!
من خواستم روش ذخیره کردن userid رو در صفحه لاگین به وسیله Session بدونم...
هیچ کاربری تا کنون از این پست تشکر نکرده است
با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)