PDA

View Full Version : افزایش سطح دسترسی به سایت



NOSRATGOLAB
سه شنبه 07 شهریور 1391, 12:37 عصر
سلام من یک پروزه دارم که صفحه لاگینش واسه دو نفر تعبیه شده (مثلا مدیر و دانش اموز)اگر بخواهم یه نفرات دیگه مثل استادم بش اضافه کنم کدش چه شکلی میشه؟:ناراحت:
خواهش میکنم کمک کنید خیلی ضروریه .ضمنا در این پروزه از ویزارد خود asp.net استفاده نشده و دانش اموز و مدیر خودشون تو جدولاشون یوزر پسشون ذخیره میشه
من جدول استادم درست کردم با فیلد های ایدی ویوزر و پس و نام و نام خانوادگی ولی نمیدونم تو صفحه لاگین چجوری اضافه کنم استادو خواهش میکنم کمک کنید


using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;
using System.Web.Security;
namespace school
{
public partial class login : System.Web.UI.Page
{
Functions ff = new Functions();
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
if (Request.QueryString["action"] != null)
{
Session.Remove("admin");
Session.Remove("student_id");
Response.Redirect("default.aspx");
}




}
}

protected void btnsubmit_Click(object sender, EventArgs e)
{
if (txtuser.Text == "")
{
err0.Text = "نام کاربری خالی است";
return;
}
if (txtpass.Text == "")
{
err1.Text = "کلمه عبور خالی است";
return;
}
string type = Request.QueryString["type"].ToString();
string user = txtuser.Text;
string pass=FormsAuthentication.HashPasswordForStoringInC onfigFile(txtpass.Text, "md5");
SqlConnection co = new SqlConnection(System.Configuration.ConfigurationMa nager.ConnectionStrings["schoolDBConnectionString"].ConnectionString);
co.Open();
SqlCommand command = new SqlCommand("select * from student where username=N'"+user+"' and password='"+pass+"'", co);
if (type == "admin")
{
command.CommandText = "select * from admin_setting where admin_pass='" + pass + "'";
}

command.CommandType = CommandType.Text;
var resault = command.ExecuteReader();
if (resault.HasRows)
{
if (type == "admin")
{
Session.Add("admin", "true");
Response.Redirect("admin.aspx");
}
else
{
string st_id = "";
while (resault.Read())
{
st_id = resault[0].ToString();
}
Session.Add("student_id", st_id);
Response.Redirect("default.aspx");
}
}
else
{
err1.Text = "کلمه عبور اشتباه است";
}
resault.Close();

}
}
}

mahmood1000
سه شنبه 07 شهریور 1391, 12:57 عصر
if (type == "admin")
{
Session.Add("admin", "true");
Response.Redirect("admin.aspx");
}
else if(type == "دانشجو")
{
string st_id = "";
while (resault.Read())
{
st_id = resault[0].ToString();
}
Session.Add("student_id", st_id);
Response.Redirect("default.aspx");
}
else if(type == "استاد")
{
Session.Add("استاد", "true");
Response.Redirect("صفحه استاد.aspx");
}


باید به این شکل دربیاریش

fakhravari
سه شنبه 07 شهریور 1391, 13:06 عصر
Session کلا چک کنید.

NOSRATGOLAB
سه شنبه 07 شهریور 1391, 13:15 عصر
Session کلا چک کنید.
منظورتون مثل کدیه که آقا محمود لطف کردن؟

NOSRATGOLAB
سه شنبه 07 شهریور 1391, 13:22 عصر
ببخشید الان من چند تا استاد دارم همونجور که هر دانشجو میره تو صفحه خودش -هر استادم باید بره تو صفحه خودش. الان من اینو چجوری بنویسم که هم استادو بشناسه هم دانشجو و هم ادمین و ادیمین که یه صفحه بیشتر نداره دانشجو و استادم هر کدام به صفحه خودشون برن

mahmood1000
سه شنبه 07 شهریور 1391, 13:24 عصر
ببینید دوست عزیز شما بعد از ورود به سایت نقش کاربر را درون session قرار میدی.
Session.Add("admin", "true");
یا

Session.Add("student_id", st_id);

بعد کاربر رو به صفحه مورد نظر قرار میدید.
Response.Redirect("admin.aspx");
در Pageload هم 100% کدی قرار داره که میاد این session هارو چک میکنه. اگر session که در حافظه قرار داره به طور مثال admin بود اجازه باز شدن صفحه را به admin میده. اما اگر نبود نه.
چیز سختی نیست. به قول دوستمون فقط باید session چک بشه
اون کدی بالا گذاشتم نمونه کد هستش و شاید نیاز به کامل شدن داشته باشه.
اگر به همین مطلبی که گذاشتم یکم دقت کنی میتونی بنویسی

mahmood1000
سه شنبه 07 شهریور 1391, 13:30 عصر
ببخشید الان من چند تا استاد دارم همونجور که هر دانشجو میره تو صفحه خودش -هر استادم باید بره تو صفحه خودش. الان من اینو چجوری بنویسم که هم استادو بشناسه هم دانشجو و هم ادمین و ادیمین که یه صفحه بیشتر نداره دانشجو و استادم هر کدام به صفحه خودشون برن

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

if (type == "admin")
{
Session.Add("admin", "true");
Response.Redirect("admin.aspx");
}

اینجا میاد چک میکنه اگه نقش admin بود اول ادمین رو در session قرار میده و بعد به صفحه admin.aspx هدایتش میکنه. تو pageload صفحه admin.aspx میاد چک مینه session رو اگر session=admin بود که هیچی صفحه باز میشه .اگر نه ارسالش میکنه به همون صفحه login

NOSRATGOLAB
سه شنبه 07 شهریور 1391, 13:40 عصر
بله اینا رو میدونم مشکل من الانه که من واسه دانشجو می خونم از تو جدولش میریزم تو یه متغیر resualt . که ایدی دانشجو رو در میاره
الان من باید یه بارم از جدول استاد بخونم ایدیشو دربیارم من بخوام بدونم کجای کد باید از جدول استاد بخونم یعنی دو بار کانکشنو وا کنم و این کا را رو کنم (مشکل در نوشتن دستورات اتصال به دیتا بیس برای استاد و دانشجو)

mahmood1000
سه شنبه 07 شهریور 1391, 15:33 عصر
من پیشنهاد میکنم نام کاربری ، رمز و سطح دسترسی رو در یه جدول بریز تا یک بار کانکشن بزنی. اما در این حالت باید برای هرکدام از کاربرات تک به تک کانکشن بزنی و اینکار اصلا عقلانی نیست

mahmood1000
سه شنبه 07 شهریور 1391, 15:47 عصر
شما این تاپیک رو به طور کامل مطالعه کن. (http://barnamenevis.org/showthread.php?257287-%D8%A2%D9%85%D9%88%D8%B2%D8%B4%DB%8C-%D8%B3%D8%A7%D8%AE%D8%AA-%D9%84%D8%A7%DA%AF%DB%8C%D9%86&highlight=%D8%A2%D9%85%D9%88%D8%B2%D8%B4+%D8%B3%D8 %A7%D8%AE%D8%AA+%D9%84%D8%A7%DA%AF%DB%8C%D9%86)
خیلی تاپیک خوبیه، اینو دوسال پیش بچه ها خیلی روش زحمت کشیدن تا ساخت لاگین و استفاده از role هارو توش آموزش دادن
حتما کامل بخون