PDA

View Full Version : سوال: ورود و خروج کاربر به سایت



ya30ien2
چهارشنبه 24 آبان 1391, 19:36 عصر
سلام دوستان من کدهای زیر رو برای ورود کاربر نوشتم
میخواستم بدونم آیا از روش صحیحی استفاده کردم ؟
اگه روش خوبی هستش برای خروج چیکار کنم ؟


protected void Page_Load(object sender, EventArgs e)
{



if (!IsPostBack)
{
if (Request.Cookies["UserName"] != null && Request.Cookies["Password"] != null)
{
Tuser.Text = Request.Cookies["UserName"].Value;
Tpass.Text = Request.Cookies["Password"].Value;
Blogin_Click(null, null);
}
else
{
//Tuser.Text = null;
//Tpass.Text = null;
//Lemail.Visible = false;
//Lname.Visible = false;
//Bexit.Visible = false;
//luser.Visible = true;
//lpass.Visible = true;
//Tuser.Visible = true;
//Tpass.Visible = true;
//Blogin.Visible = true;
//Chsave.Visible = true;
}
}
else
{
Lname.Visible = false;
Lemail.Visible = false;
Bexit.Visible = false;
}


protected void Blogin_Click(object sender, EventArgs e)
{
if (Tuser.Text != null && Tpass.Text != null)
{
Login lo = new Login();
lo.UserName = Tuser.Text;
lo.Password = Tpass.Text;
//admin
if (lo.LoginUser() == 1 && lo.Level == true && lo.License == true) { Session["mys"] = true; Response.Redirect("~/Admin.aspx"); }
//username locked
else if (lo.LoginUser() == 1 && lo.License == false) { Response.Redirect("~/Login.aspx"); }
//user
else if (lo.LoginUser() == 1 & lo.Level == false)
{
if (Chsave.Checked)
{
Response.Cookies["UserName"].Expires = DateTime.Now.AddDays(30);
Response.Cookies["Password"].Expires = DateTime.Now.AddDays(30);
}
else
{
Response.Cookies["UserName"].Expires = DateTime.Now.AddDays(-1);
Response.Cookies["Password"].Expires = DateTime.Now.AddDays(-1);

}
Response.Cookies["UserName"].Value = Tuser.Text.Trim();
Response.Cookies["Password"].Value = Tpass.Text.Trim();

Lemail.Text = lo.Email;
Lname.Text = lo.Name + " " + lo.LName;
Lemail.Visible = true;
Lname.Visible = true;
Bexit.Visible = true;
luser.Visible = false;
lpass.Visible = false;
Tuser.Visible = false;
Tpass.Visible = false;
Blogin.Visible = false;
Chsave.Visible = false;

}
//no username
else if (lo.LoginUser() == 0) { Response.Redirect("~/Login.aspx"); }
}


private int id;
public int Id
{
get { return id; }
set { id = value; }
}

private string name;
public string Name
{
get { return name; }
set { name = value; }
}

private string lname;
public string LName
{
get { return lname; }
set { lname = value; }
}

private string user;
public string UserName
{
get { return user; }
set { user = value; }
}


private string pass;
public string Password
{
get { return pass; }
set { pass = value; }
}

private string email;
public string Email
{
get { return email; }
set { email = value; }
}

private string date;
public string DATE
{
get { return date; }
set { date = value; }
}

private Boolean level;
public Boolean Level
{
get { return level; }
set { level = value; }
}

private Boolean license;
public Boolean License
{
get { return license; }
set { license = value; }
}

string conn = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;

public int LoginUser(int record = 0)
{
SqlConnection con = new SqlConnection(conn);
string HashPassword = FormsAuthentication.HashPasswordForStoringInConfig File(Password, "MD5");
string strcmd = "Select * From NameUser Where UserName = @user and Password=@pass";
con.Open();
SqlCommand command = new SqlCommand(strcmd, con);
command.Parameters.Add("@user", SqlDbType.NVarChar).Value = UserName;
command.Parameters.Add("@pass", SqlDbType.NVarChar).Value = HashPassword;
SqlDataReader reader = command.ExecuteReader();
if (reader.Read())
{
Id = Convert.ToInt32(reader["Id"]);
Name = Convert.ToString(reader["Name"]);
LName = Convert.ToString(reader["LName"]);
Email = Convert.ToString(reader["Email"]);
Level = Convert.ToBoolean(reader["Level"]);
License = Convert.ToBoolean(reader["License"]);
DATE = Convert.ToString(reader["Date"]);
record = 1;
}

return record;
}






برای خروج کد زیر رو نوشتم :
وقتی اجرا میکنم خارج میشه اما با رفرش صفحه دوباره وارد میشه
لطفا بگید باید چیکار کنم


protected void Bexit_Click(object sender, EventArgs e)
{
Response.Cookies.Remove("UserName");
Response.Cookies.Remove("Password");
Lemail.Visible = false;
Lname.Visible = false;
Bexit.Visible = false;
luser.Visible = true;
lpass.Visible = true;
Tuser.Visible = true;
Tpass.Visible = true;
Blogin.Visible = true;
Chsave.Visible = true;
Tuser.Text = "";
Tpass.Text = "";
}

saeed31641
چهارشنبه 24 آبان 1391, 20:26 عصر
چرا از کوکی استفاده کردی.از سشن استفاده کن اصلا کوکی خوب نیست.
چون ممکن مرورگی اصلا کوکیش غیر فعال باشه
sesstion["name"]
sesstion.removeall()

ya30ien2
پنج شنبه 25 آبان 1391, 11:15 صبح
کسی نبود منو راهنمایی کنه؟

fakhravari
پنج شنبه 25 آبان 1391, 11:21 صبح
هدف شما چی؟
میتوانید از ممبرشیپ استفاده کنید.
اگر نمی کنید کوکی و سشن راهای دیگری هستند.

mhq1368
پنج شنبه 25 آبان 1391, 11:23 صبح
با سلام
دوست گرامی saeed31641 که راهنمایی تون کردن
گفتن از session استفاده کن

ya30ien2
پنج شنبه 25 آبان 1391, 11:35 صبح
یعنی همگی میگید استفاده از سشن بهترین راه هستش
برای اینکه اگه تیک checkbox رو زد (ذخیره نام کاربری و رمز عبور برای ورود اتوماتیک در دفعات دیگر ورود به سایت ) اونو چیکار کنم

mhq1368
پنج شنبه 25 آبان 1391, 12:38 عصر
یه شرط بزارید دیگه



if(checkedbox1.checked)
{
sesssion.time=10;
}

این عدد به دقیقه هست
یعنی 10 دقیقه

ya30ien2
پنج شنبه 25 آبان 1391, 12:42 عصر
خوب 10 دقیقه رو میشه مثلا برای یک هفته تمیدید کرد؟

fakhravari
پنج شنبه 25 آبان 1391, 13:06 عصر
باید یه کوکی بزاری اگر بود یه سشن بسازه و عمرش زیاد بده.
سشن نمیتونی اینطوری مدت بدی

mhq1368
پنج شنبه 25 آبان 1391, 13:11 عصر
باید یه کوکی بزاری اگر بود یه سشن بسازه و عمرش زیاد بده.
سشن نمیتونی اینطوری مدت بدی

سلام آقای فخرآوری
چطور نمیشه این طوری مدت داد من خودم با همین روش سایتم رو ساختم تو فروم ش کد زیر رو تو مستر پیجش نوشتم
Session.Timeout = 60;
یعنی 1 ساعت کاربر میتونه تو فروم باشه

c#=life
پنج شنبه 25 آبان 1391, 15:22 عصر
چرا از خود سکوریتی visualstudieاستفاده نکردی ؟؟؟

saeed_sho
پنج شنبه 25 آبان 1391, 16:38 عصر
از ممبرشیپ استفاده کنید و وقتتون رو بزارید برای جاهای دیگه سایت

ya30ien2
پنج شنبه 25 آبان 1391, 23:16 عصر
دوستان من از سشن استفاده کردم و کدهای لوگین رو داخل مستر پیج قرار دادم ولی با رفتن به صفحه دیگه اکاربر خود به خود خارج میشه
همون کدهای بالا فقط به سشن تبدیل کردم کسی میدونه باید چیکار کنم؟

mhq1368
پنج شنبه 25 آبان 1391, 23:23 عصر
شما باید

session رو به صورت زیر استفاده کنی

کد های زیر رو تو صفحه ی login درون رویداد کلیک دکمه ت قرار بده

con = new SqlConnection(str);
con.Open();
da = new SqlDataAdapter("select * from u where u_name=@username", con);
da1 = new SqlDataAdapter("select * from u where pass=@password", con);
da.SelectCommand.Parameters.AddWithValue("@username", txtuser.Text);
da1.SelectCommand.Parameters.AddWithValue("@password", txtpas.Text);
da.Fill(ds, "u");
da1.Fill(dt);
if (ds.Tables["u"].Rows.Count > 0)
{
if (dt.Rows.Count > 0)
{
connnect();
TextBox1.Text = ds.Tables["u"].Rows[0].ItemArray.GetValue(2).ToString();
Session.Add("user", "true");
Session.Add("name", TextBox1.Text);
Session.Add("uname", txtuser.Text);
Session.Add("img", img11);
Session.Add("name1", name);
Session.Add("family", family);
Session.Add("adr", adr);
Session.Add("email", email);
Session.Add("pas", txtpas.Text);
Response.Redirect("user_profile/change_certification.aspx");


}
else
{
lbl5.Visible = true;
lbl5.Text = "رمز عبور موجود نیست";

}

}
else
{
lbl5.Visible = true;
lbl5.Text = "نام کاربری موجود نیست";

}

کدهای زیر رو تو صفحه هات دیگه ت


if (Session["user"] == null)
{
pnl.Visible = true;
txtuser.Focus();
txtpas.Text = "";
txtuser.Text = "";
}
else
{
pnl.Visible = false;
TextBox1.Text = ds.Tables["u"].Rows[0].ItemArray.GetValue(2).ToString();
Session.Add("user", "true");
Session.Add("name", TextBox1.Text);
Response.Redirect("Default.aspx");
Session["admin"] = null;

}