ورود

View Full Version : ارور در ارتباط با پایگاه



amin750
سه شنبه 23 آبان 1391, 16:34 عصر
سلام من این ارور رو دارم لطفا راهنمایی کنید
مربوط به لوگین هستش

Incorrect syntax near 'Password'

mhq1368
سه شنبه 23 آبان 1391, 17:53 عصر
سلام
دستورتون رو کامل بنویسید شاید تونستم مشکلش رو برطرف کنم

saeed_sho
سه شنبه 23 آبان 1391, 18:08 عصر
کد کانکشن استرینگ رو بزارید

amin750
سه شنبه 23 آبان 1391, 18:10 عصر
SqlConnection con = new SqlConnection("Data Source=.;Initial Catalog=dbProject;Integrated Security=True");
SqlDataAdapter sda = new SqlDataAdapter("select * from tblUser where Username=@a Password=@b", con);
sda.SelectCommand.Parameters.AddWithValue("@a", txtUsername.Text);
sda.SelectCommand.Parameters.AddWithValue("@b", txtPassword.Text);
sda.SelectCommand.CommandType=CommandType.Text;
DataSet ds=new DataSet();
sda.Fill(ds);

saeed_sho
سه شنبه 23 آبان 1391, 18:23 عصر
موقع درج کردن رکوردها پسورد رو هش یا encrypt کردید؟

amin750
سه شنبه 23 آبان 1391, 18:28 عصر
نه کد همینه فقط textmode تکس باکس رو گذاشتم روی password

fakhravari
سه شنبه 23 آبان 1391, 18:33 عصر
where Username=@a and Password=@b

amin750
سه شنبه 23 آبان 1391, 19:04 عصر
1
where Username=@a <b>and </b>Password=@b



ممنون
اگه بخوام وقتی که ادمین لوگین کرد صفحاتی رو که واسش در نظر گرفتم رو ببینه چه کار باید بکنم؟؟؟
باید جدول ادمین درست کنم؟؟ یا توی جدول user براش IsAdmin در نظر بگیرم؟؟؟
اگه میشه با ذکر کد

saeed_sho
سه شنبه 23 آبان 1391, 19:11 عصر
آقای فخرآوری درست میگن بین یوزرنیم و پسورد and نذاشتین

saeed_sho
سه شنبه 23 آبان 1391, 19:14 عصر
از ممبرشیپ خود ای اس پی استفاده کنید و براش role تعریف کنید و role رو موقع لاگین چک کنید

fakhravari
سه شنبه 23 آبان 1391, 20:23 عصر
اره یه فیلد به جدول کاربرانت به عنوان role
که میتونی نقش admin - user بهش بدی
و موقع لاگین این متغیر در یک سشن نگهداری کنید.
ممبرشیپ که یک نمونه کامل.

amin750
پنج شنبه 25 آبان 1391, 22:46 عصر
اره یه فیلد به جدول کاربرانت به عنوان role
که میتونی نقش admin - user بهش بدی
و موقع لاگین این متغیر در یک سشن نگهداری کنید.
ممبرشیپ که یک نمونه کامل.
میشه بیشتر در موردش توضیح بدی ؟؟
من وقتی user وارد میشه سشن ایجاد کردم
حالا چطور بفهمم این یوزر ادمینه؟؟؟؟؟

fakhravari
پنج شنبه 25 آبان 1391, 23:19 عصر
در مورد کدام؟
ممبرشیپ یا نمونه ساده خودتون؟
ممبرشیپ که کد هاش امادن.
در مورد نمونه خودتون هم موقع ورود نام کاربری را در سشن بزارید.
Session.Add("u", txtUserName.Text);
Response.Redirect("admin/admin.aspx");

استفاده
protected void Page_Load(object sender, EventArgs e)
{
if (Session["u"] != null)
{
if (!IsPostBack)
{

}
}
else
{
Response.Redirect("../Default.aspx");
}


}

amin750
پنج شنبه 25 آبان 1391, 23:49 عصر
در مورد کدام؟
ممبرشیپ یا نمونه ساده خودتون؟
ممبرشیپ که کد هاش امادن.
در مورد نمونه خودتون هم موقع ورود نام کاربری را در سشن بزارید.
Session.Add("u", txtUserName.Text);
Response.Redirect("admin/admin.aspx");

استفاده
protected void Page_Load(object sender, EventArgs e)
{
if (Session["u"] != null)
{
if (!IsPostBack)
{

}
}
else
{
Response.Redirect("../Default.aspx");
}


}
نام کاربری رو گذاشتم توی سشن
حالا میخام اگه admin وارد شد بره به منوی مدیریت اگه یوزر معمولی بود صفحهایی که براش مشخص شده رو ببینه

ali9698
جمعه 26 آبان 1391, 00:27 صبح
توی page load بنویس
if (User.IsInRole("admin"))
Server.Transfer("admin.aspx");
else if (User.IsInRole("user"))
Server.Transfer("user.aspx");

amin750
جمعه 26 آبان 1391, 00:42 صبح
توی page load بنویس
if (User.IsInRole("admin"))
Server.Transfer("admin.aspx");
else if (User.IsInRole("user"))
Server.Transfer("user.aspx");
دیتا بیس خودم درست کردم با این کد میشه؟؟
این که نوشتی ماله ممبرشیپه؟؟

ali9698
جمعه 26 آبان 1391, 01:05 صبح
اهان آره این که من نوشتم مال بانک خود asp هستش
پس از این استفاده کن
SqlConnection con = new SqlConnection(@"server=/*نام سرور*/;database=/*نام بانک*/;integrated security=true");
cmd.Parameters.AddWithValue("@username", Session["u"].ToString()());
SqlCommand cmd = new SqlCommand("select role from users_table where username_field=@username", con);
con.Open();
if(cmd.ExecuteScalar().ToString()=="admin")
Response.Redirect("admin.aspx");
else if(cmd.ExecuteScalar().ToString()=="user"
Response.Redirect("user.aspx");

con.Close();


البته به نظر من این کد رو بزار توی page_load صفحه ای که برای کاربران معمولی هستش و اون قسمت else if رو از شرط کلا حذف کن

amin750
جمعه 26 آبان 1391, 01:24 صبح
ستون role هم باید بسازم؟؟
مقدارشو چی بدم ؟؟
فیلداش چی باشن؟؟

ali9698
جمعه 26 آبان 1391, 02:10 صبح
من فرض رو بر این گذاشتم که خودت بانک رو ساختی. منظور من از ستون role ستونی هست که نقش کاربر (ادمین یا کاربر عادی) توی اون ذخیره میشه
یعنی علاوه بر فیلد یوزر و پسورد یه فیلد role هم نیاز داری که وقتی یه کاربر از طریق سایت ثبت نام میکنه باید نوع نقش براش تعریف بشه که کاربر عادی هستش یا ادمین

ali9698
جمعه 26 آبان 1391, 02:13 صبح
راستی چرا خودت بانک ساختی؟ اگر که دلیل خاصی نداره از ممبرشیپ خود asp استفاده کن. خیلی مدیریتش راحت تره. امنیتش هم بالاتره. مخصوصا از نظر sql injection

fakhravari
جمعه 26 آبان 1391, 02:35 صبح
شما با سشن سرکار دارید دیگر.
یک روش دیگر هم هست. کلاس خود کاربر بزارید مثلا
یه کلاسی دارید به اسم یوزر که یک سری پراپرتی داره شما میتونید کل کلاس بزارید در سشن.
این طوری به طور مستقیم هم به اسم و به نوع و هر چیز کاربر دسترسی داری
میتونید در page load چک کنید اگر نبود visible به صورت false کنید.

ali9698
جمعه 26 آبان 1391, 09:29 صبح
یه سوال دارم آقای فخر آوری. استفاده از خود کلاس user و کار با بانکی که خود asp میسازه معایبی داره که همه دنبال سشن و کوکی هستند؟ اصلا تفاوت اصلی اونا با هم چیه؟ یا این که چه مزایایی دارن؟

fakhravari
جمعه 26 آبان 1391, 11:15 صبح
شما اطلاعات می خواهید کجا ذخیره کنید بعد از لاگین ؟؟؟
سشن توانایی حجم بالا تر و کوکی در حد 1 کیلوبایت فکر کنم در حد چنتا اسم.

amin750
جمعه 26 آبان 1391, 14:57 عصر
اهان آره این که من نوشتم مال بانک خود asp هستش
پس از این استفاده کن
SqlConnection con = new SqlConnection(@"server=/*نام سرور*/;database=/*نام بانک*/;integrated security=true");
cmd.Parameters.AddWithValue("@username", Session["u"].ToString()());
SqlCommand cmd = new SqlCommand("select role from users_table where username_field=@username", con);
con.Open();
if(cmd.ExecuteScalar().ToString()=="admin")
Response.Redirect("admin.aspx");
else if(cmd.ExecuteScalar().ToString()=="user"
Response.Redirect("user.aspx");

con.Close();


البته به نظر من این کد رو بزار توی page_load صفحه ای که برای کاربران معمولی هستش و اون قسمت else if رو از شرط کلا حذف کن
اول قسمت if داخلیش کار کرد بعد این ارور میده
SqlConnection con = new SqlConnection("Data Source=.;Initial Catalog=dbProject;Integrated Security=True");
SqlDataAdapter sda = new SqlDataAdapter("select * from tblUser where Username=@a and Password=@b", con);
sda.SelectCommand.Parameters.AddWithValue("@a", txtUsername.Text);
sda.SelectCommand.Parameters.AddWithValue("@b", txtPassword.Text);
sda.SelectCommand.CommandType=CommandType.Text;
DataSet ds=new DataSet();
sda.Fill(ds);


if (ds.Tables[0].Rows.Count == 1)
{
con.Open();
SqlCommand cmd = new SqlCommand("select IsAdmin from tblUser where Username=@a", con);
cmd.Parameters.AddWithValue("@a", Session["mys"].ToString());
if (cmd.ExecuteScalar().ToString() == "True")
{
Response.Redirect("admin/Nazarat.aspx");
}
else
{
Response.Redirect("Default.aspx");
}
}
else
{
lblError.Visible = true;
}

این کله لوگین منه
این ارور رو میده از خط 14 ارور میگیره
مشکل کجاست؟؟؟
Object reference not set to an instance of an object

amin750
جمعه 26 آبان 1391, 15:10 عصر
وقتی کد رو به صورت زیر مینویسم درست میشه ولی else اش کار نمیکنه در هر دو حالت قسمت اول اجرا میشه

if (ds.Tables[0].Rows.Count == 1)
{
con.Open();
SqlCommand cmd = new SqlCommand("select IsAdmin from tblUser", con);

if (cmd.ExecuteScalar().ToString() == "True")
{
Session.Add("mys", txtUsername.Text);
Response.Redirect("admin/Nazarat.aspx");
}
else
{
Response.Redirect("Default.aspx");
}
}

fakhravari
جمعه 26 آبان 1391, 15:28 عصر
قبل استفاده سشن با null برسی کنید .
چون در حالت عادی عمرش زود تموم میشه روی IIS درست کار میکنه.

amin750
جمعه 26 آبان 1391, 15:53 عصر
کجای کد سشنو چک کنم؟
چی بنویسم؟؟

Sir-Programmer
جمعه 26 آبان 1391, 16:46 عصر
این ارور چیه :متفکر:

Server Error in '/' Application.

A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: SQL Network Interfaces, error: 26 - Error Locating Server/Instance Specified)

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.Data.SqlClient.SqlException: A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: SQL Network Interfaces, error: 26 - Error Locating Server/Instance Specified)

Source Error:

An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.
Stack Trace:

[SqlException (0x80131904): A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: SQL Network Interfaces, error: 26 - Error Locating Server/Instance Specified)] System.Data.SqlClient.SqlInternalConnection.OnErro r(SqlException exception, Boolean breakConnection) +5064458 System.Data.SqlClient.TdsParser.ThrowExceptionAndW arning() +234 System.Data.SqlClient.TdsParser.Connect(ServerInfo serverInfo, SqlInternalConnectionTds connHandler, Boolean ignoreSniOpenTimeout, Int64 timerExpire, Boolean encrypt, Boolean trustServerCert, Boolean integratedSecurity) +341 System.Data.SqlClient.SqlInternalConnectionTds.Att emptOneLogin(ServerInfo serverInfo, String newPassword, Boolean ignoreSniOpenTimeout, TimeoutTimer timeout, SqlConnection owningObject) +129 System.Data.SqlClient.SqlInternalConnectionTds.Log inNoFailover(ServerInfo serverInfo, String newPassword, Boolean redirectedUserInstance, SqlConnection owningObject, SqlConnectionString connectionOptions, TimeoutTimer timeout) +270 System.Data.SqlClient.SqlInternalConnectionTds.Ope nLoginEnlist(SqlConnection owningObject, TimeoutTimer timeout, SqlConnectionString connectionOptions, String newPassword, Boolean redirectedUserInstance) +195 System.Data.SqlClient.SqlInternalConnectionTds..ct or(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, Object providerInfo, String newPassword, SqlConnection owningObject, Boolean redirectedUserInstance) +232 System.Data.SqlClient.SqlConnectionFactory.CreateC onnection(DbConnectionOptions options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection) +5078107 System.Data.ProviderBase.DbConnectionFactory.Creat ePooledConnection(DbConnection owningConnection, DbConnectionPool pool, DbConnectionOptions options) +33 System.Data.ProviderBase.DbConnectionPool.CreateOb ject(DbConnection owningObject) +524 System.Data.ProviderBase.DbConnectionPool.UserCrea teRequest(DbConnection owningObject) +66 System.Data.ProviderBase.DbConnectionPool.GetConne ction(DbConnection owningObject) +479 System.Data.ProviderBase.DbConnectionFactory.GetCo nnection(DbConnection owningConnection) +108 System.Data.ProviderBase.DbConnectionClosed.OpenCo nnection(DbConnection outerConnection, DbConnectionFactory connectionFactory) +126 System.Data.SqlClient.SqlConnection.Open() +125 System.Data.Common.DbDataAdapter.FillInternal(Data Set dataset, DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior) +123 System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior) +319 System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, String srcTable) +92 System.Web.UI.WebControls.SqlDataSourceView.Execut eSelect(DataSourceSelectArguments arguments) +1618 System.Web.UI.DataSourceView.Select(DataSourceSele ctArguments arguments, DataSourceViewSelectCallback callback) +21 System.Web.UI.WebControls.DataBoundControl.Perform Select() +143 System.Web.UI.WebControls.BaseDataBoundControl.Dat aBind() +74 System.Web.UI.WebControls.GridView.DataBind() +4 System.Web.UI.WebControls.BaseDataBoundControl.Ens ureDataBound() +66 System.Web.UI.WebControls.CompositeDataBoundContro l.CreateChildControls() +75 System.Web.UI.Control.EnsureChildControls() +102 System.Web.UI.Control.PreRenderRecursiveInternal() +42 System.Web.UI.Control.PreRenderRecursiveInternal() +175 System.Web.UI.Control.PreRenderRecursiveInternal() +175 System.Web.UI.Control.PreRenderRecursiveInternal() +175 System.Web.UI.Control.PreRenderRecursiveInternal() +175 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +2496

Sir-Programmer
جمعه 26 آبان 1391, 17:03 عصر
لطفاً کسی هست جواب بده :ناراحت:

fakhravari
جمعه 26 آبان 1391, 18:43 عصر
هر جا قبل استفاده
if(Session["sys"] != null)

ali9698
جمعه 26 آبان 1391, 20:02 عصر
آقای فخرآوری مگه بعد از لاگین چه اطلاعاتی لازمه که نگهداری بشه به جز یوزرنیم؟
که اونم از طریق User.Identity.Name قابل دسترسی هستش

ali9698
جمعه 26 آبان 1391, 20:07 عصر
سلام دوست عزیز
شما ظاهرا توی کدت از dataset هم استفاده کردی. اما کدی که من برات نوشتم نیاز به dataset نداره
راستی کجای کد من ارور میده؟ متوجه نشدم که با کجاش مشکل داری؟ چه اروری میده؟
راستی اون دستور if و elseif رو به طور کامل بزار توی یه if دیگه. به این صورت:
if(cmd.ExecuteScalar()!=Null)
{
/* اینجا if و else if قبلی رو بزار */
{

amin750
جمعه 26 آبان 1391, 20:08 عصر
ali_joon_1371
پست #25 رو یه نگاه بنداز ببین میتونی درستش کنی؟؟؟

amin750
جمعه 26 آبان 1391, 20:19 عصر
سلام دوست عزیز
شما ظاهرا توی کدت از dataset هم استفاده کردی. اما کدی که من برات نوشتم نیاز به dataset نداره
راستی کجای کد من ارور میده؟ متوجه نشدم که با کجاش مشکل داری؟ چه اروری میده؟
راستی اون دستور if و elseif رو به طور کامل بزار توی یه if دیگه. به این صورت:
if(cmd.ExecuteScalar()!=Null)
{
/* اینجا if و else if قبلی رو بزار */
{
ببین میدونی مشکل من الان با کد پست 25 چیه؟؟
اینه که if داخلی و else اش هر دو به یه جا میرن اونم قسمت if داخلیه else اش اجرا نمیشه
من توی جدول IsAdmin براش دو تا مقدار گذاشتم true , false
حالا باید اگه true باشه باید بره به بخش مدیریت
اگرم false باشه بره به بخش کاربری
ولی false اش کار نمیکنه
چرا؟؟

ali9698
جمعه 26 آبان 1391, 20:20 عصر
کدی که نوشتی رو کامل بزار. اون if که اون بالا هست کارش چیه؟!
چرا دستور select رو براش شرط نذاشتی؟ اینجوری همیشه فقط مقدار فیلد isadmin رو از اولین رکوردی که توی جدول tbl_user داری بر می گردونه که احتمالا همیشه و اصلا کاری نداری که این کاربر یوزرنیمش چیه!
سشن رو هم باید کلا قبل از اینا مقدار داده باشه. نمیفهمم منظورت از این کد چی بوده؟!

amin750
جمعه 26 آبان 1391, 20:44 عصر
SqlConnection con = new SqlConnection("Data Source=.;Initial Catalog=dbProject;Integrated Security=True");
SqlDataAdapter sda = new SqlDataAdapter("select * from tblUser where Username=@a and Password=@b", con);
sda.SelectCommand.Parameters.AddWithValue("@a", txtUsername.Text);
sda.SelectCommand.Parameters.AddWithValue("@b", txtPassword.Text);
sda.SelectCommand.CommandType=CommandType.Text;
DataSet ds=new DataSet();
sda.Fill(ds);


if (ds.Tables[0].Rows.Count == 1)
{
con.Open();
SqlCommand cmd = new SqlCommand("select IsAdmin from tblUser", con);

if (cmd.ExecuteScalar().ToString() == "True")
{
Session.Add("mys", txtUsername.Text);
Response.Redirect("admin/Nazarat.aspx");
}
else if (cmd.ExecuteScalar().ToString() == "False")
{
Response.Redirect("Default.aspx");
}

}
else
{
lblError.Visible = true;
}

این کده کامله
خطوط 1 تا 7 که چک کردن نام کاربری و رمز عبور داخل جدوله
if اول چک میکنه که اگه عملیات ما مقداری داشت که یه سطر از جدوله یعنی user و pass وجود دارد
sql command میگرده که اگه تو اون سطر پیدا شده Isadmin=true بود(if دوم ) یعنی شخصی که لوگین کرده ادمین بوده و سشن رو ایجاد میکنه و میره به بخش مدیریت
در غیر این صورت اگه is admin=false بود (else if) یعنی شخص وارد شده کاربر معمولیه و سشن رو ایجاد کنه و بره داخل سایت
حالا شما لطف کن هر جاش مشکل داره درستش کن کدشو بذار

ali9698
جمعه 26 آبان 1391, 20:45 عصر
این کد کامل لوگین. باید جواب بده
فیلد IsAdmin توی بانک رو چه نوع تعریف کردی؟ باید varchar باشه. char جواب نمیده
SqlConnection con = new SqlConnection("Data Source=.;Initial Catalog=dbProject;Integrated Security=True");
SqlCommand sda = new SqlCommand("select IsAdmin from tblUser where Username=@a and Password=@b", con);
sda.SelectCommand.Parameters.AddWithValue("@a", txtUsername.Text);
sda.SelectCommand.Parameters.AddWithValue("@b", txtPassword.Text);
String str_role;
con.Open();
if(cmd.ExecuteScalar()!=null)
{
str_role=cmd.ExecuteScalar().ToString();
Session.Add("user",txtUsername.Text);
if (str_role=="True")
Response.Redirect("adminpage.aspx");
else if(str_role=="False")
Response.Redirect("userpage.aspx");
}

amin750
جمعه 26 آبان 1391, 20:50 عصر
فیلد IsAdmin رو توی بانک از نوع bit تعریف کردم که فقط مقدار true , false بگیره

ali9698
جمعه 26 آبان 1391, 20:58 عصر
اهان پس توی این کد که من نوشتم باید حرف اول true و false رو بزرگ بنویسی

amin750
جمعه 26 آبان 1391, 21:10 عصر
ممنون درست شد
یه اشکال کوچولو داشت اونم این بود که cmd ها باید میشدن sda
من اشتباهم این بود که باید اول برنامه باید به جای select * مینوشتم select IsAdmin دیگه اون select پایینی لازم نبود
بازم ممنون

ali9698
جمعه 26 آبان 1391, 21:10 عصر
مشکل حل شد؟

ali9698
جمعه 26 آبان 1391, 21:12 عصر
خواهش میکنم
آره حواسم نبود که اون رو درستش کنم

amin750
جمعه 26 آبان 1391, 21:12 عصر
آره بزرگ نوشتم

amin750
جمعه 26 آبان 1391, 21:25 عصر
این دستوره ExecuteScalar چه کار میکنه؟؟

ali9698
جمعه 26 آبان 1391, 21:36 عصر
ببین هر دستور sql که توی یه sqlcommand مینویسی رو به چند روش میتونی اجرا کنی که این یکیشه. هر دستور select خروجیش یه جدوله. این دستور مقدار اولین فیلد(یعنی اولین فیلد از سمت چپ) از اولین رکورد اون جدول رو بر میگردونه