مرجع تخصصی برنامه نویسان

انجمن تخصصی برنامه نویسان فارسی زبان

کاربر سایت

moonfa1392

عضویت از 1394/08/17

سوال درباره Session

  • دوشنبه 4 مرداد 1395
  • 08:41
تشکر میکنم

با سلام

من کد صفحه 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 باید استفاده کنم اما نمیتونم کدش رو بنویسم!

پاسخ های این پرسش

تعداد پاسخ ها : 6 پاسخ
کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • دوشنبه 4 مرداد 1395
  • 09:03

چرا سیستم رو خودتون پیاده سازی کردید و از Membership استفاده کردید ؟

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

علت خطای شما هم اینه که در کوئری شرط نزاشتید اطلاعات کدام کاربر را میخواهید

 string sqlText = "select Name and Picture from Tbl_Users";

 

کاربر سایت

moonfa1392

عضویت از 1394/08/17

  • دوشنبه 4 مرداد 1395
  • 09:16

آخه استاد سایت کلا 3 تا مدیر داره بیشتر از این هم اصلا قرار نیست اضافه بشه!!!

میدونم باید شرط بذارم مثلا به این صورت بنویسم:

string sqlText = string.Format("Select * From Tbl_Users Where ID={0} ", Request.QueryString["userId"]);

 

اما نمیدونم توی صفحه لاگین چجوری userid رو ذخیره کنم که اینجا بتونم رکوئست بدم

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • دوشنبه 4 مرداد 1395
  • 09:26

اگر یدونه هم داره بهرته امنیت رو بسپرید به Membership

براتون خودش ID کاربر رو نگهداری میکنه

کاربر سایت

moonfa1392

عضویت از 1394/08/17

  • دوشنبه 4 مرداد 1395
  • 09:34

استاد من تاحالا اصلا از MemberShip استفاده نکردم

این مقاله رو خوندم که اینم کامل توضیح نداده خوب متوجه نشدم

http://barnamenevisan.org/Articles/Article4317.html

کاربر سایت

armanweb.co

عضویت از 1395/05/04

  • دوشنبه 4 مرداد 1395
  • 14:49

بعضی وقتها تنظیمات session timout سرور با اسکریپتتون نمیخونه اون موقع هم ممکنه با این خطا مواجه بشید به نظرم تنظیمات سرور رو چک کنید اول و بعد اسکریپتتون مچش کنید . قطعا مشکل از کد نویسی شما نیست !

کاربر سایت

moonfa1392

عضویت از 1394/08/17

  • دوشنبه 4 مرداد 1395
  • 15:10

دوست عزیز الان اصلا خطایی وجود نداره!!!!

من خواستم روش ذخیره کردن userid رو در صفحه لاگین به وسیله Session بدونم...

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

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

اگر نیاز به یک مشاور در زمینه طراحی سایت ، برنامه نویسی و بازاریابی الکترونیکی دارید

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)