PDA

View Full Version : بررسی وجود نام و پسورد کاربران در بانک اسکیوئل



shahabedeen
دوشنبه 20 مرداد 1382, 11:52 صبح
اگر کاربر در همان صفحه ی اول روی دکمه ی ورود کلیک کرد باید چک شود آیا دردیتابیس وجود دارد و آیا را صحیح وارد کرده است یا خیر؟ سپس به یک صفحه ID و جداگانه ی خوش آمد گویی و یا برعکس!! هدایت می شود.

1-چگونه باید پس از مقایسه بانک اطلاعات با تکست باکس ها دستوری مبنی بر انتقال به صفحه ای
دیگر نوشت؟
String insertCmd =

"IF (SELECT name,password from tblSignup where (name='"+TextBox1.Text.Trim()+"')AND"+
"(password='"+TextBox2.Text.Trim()+"'))"+…?
Exists
2-برای اینکه چک شود نامی که کاربران در ثبت نام جدید (نیو یوزر) تایپ میکنن تکراری نیست چطور باید یک اکسپشن هندلر طراحی و برنامه نویسی کرد؟
3-در این خط برای اینکه چک شود که یوزر و پسورد تایپ شده توسط کاربر در بانک اسکیوئل هست یا نه چه تغییراتی باید بدهیم.
(("if((txtID=="shahabedeen") && (txtPass=="Password

در ضمن منبع مقاله را هم اشاره کنید!
3-چگونه میشود مقدار یک متغیر که در رویه ذخیره شده(استورد پروسیجر) مقدار دهی شده را به یک تکست باکس نسبت داد؟(سورس)

Vahid_Nasiri
دوشنبه 20 مرداد 1382, 13:38 عصر
خلاصه ی تمام سوالات به صورت کلی : من تابع زیر را برای خواندن اطلاعات از دیتابیس نوشته ام . این تابع سورسش برای انجام کارهات بهت دید می ده :


/// <summary>
/// find Bind ...
/// </summary>
public object[] FindBindToَArray(
string webConfigKey_ConnectionStr,
string strTableName,
string strFieldNameToFind,
object ValueToFind,
Label lblErrorMessageToShow,
int[] intFieldsOrderToShow
)
{

object[] ArrayNameToBind = new object[intFieldsOrderToShow.Length];

try
{
SqlConnection m_sqlconnection =
new SqlConnection( getConnectionStrFormWebConfig(webConfigKey_Connect ionStr) );

Type myType = ValueToFind.GetType();
string strSQL;

if ( myType.IsValueType )
strSQL = "SELECT * FROM " +
strTableName +" where "+
strFieldNameToFind+"="+ ValueToFind ;
else
strSQL = "SELECT * FROM " +
strTableName + " where " +
strFieldNameToFind + "='" + ValueToFind + "'" ;

SqlCommand m_sqlcommand = new SqlCommand(strSQL, m_sqlconnection);

m_sqlcommand.Connection.Open();

SqlDataReader myReader = m_sqlcommand.ExecuteReader();

myReader.Read();

string strTemp="";

for(int i=0 ; i < intFieldsOrderToShow.Length ; i++)
{
strTemp = myReader.GetValue( intFieldsOrderToShow[i] ).ToString() ;

ArrayNameToBind[i] = strTemp;
}

myReader.Close();
m_sqlcommand.Connection.Close();

lblErrorMessageToShow.Text ="";

return
ArrayNameToBind;


}
catch( Exception ee)
{
lblErrorMessageToShow.Text = ee.ToString();
ArrayNameToBind = null;
return
ArrayNameToBind;
}

}

Vahid_Nasiri
سه شنبه 21 مرداد 1382, 10:30 صبح
سلام

من اون تابع را اضافی نوشته ام. لطفا آنرا از کد پاک کنید و بجای آن خیلی راحت کانکشن استرینگ خودتان را قرار دهید تا مشکل حل شود. :wink:

shahabedeen
چهارشنبه 22 مرداد 1382, 11:23 صبح
:o کاری که الان می خواهم انجام بدهم آنستکه:
1-استورد پروسیجری ساخته.
CREATE PROCEDURE proc_find_user @UserName varchar(50),@psw varchar(50)AS select * from tblSignup where (name =@UserName and password = @psw) return
GO

2-محتویات 2 تا تکست باکس ها را بعنوان 2 آرگومان ورودی آن spرد ارجاع نموده.
"EXEC proc_find_user " +"'"+TextBox1.Text+"'"+TextBox2.Text+"'"
3-در باتن کلیک چک کنم که ایا این دو متغیر که با تکست باکس رد کردیم به آرگومانهای spدر بانک اگزیستز؟
4-با یک رشته یا یک تابع بولی (این مطلب چک میشه)
5-اگر بله به خوشامدگویی :roll:
6-وگرنه اینولید به کاربر اعلام بشه.
:shock: خروجی اون تابع را چطور باید بنویسم تا چک کند که درون بانک یوزر و پسورد وارد شده وجود دارد؟

Vahid_Nasiri
چهارشنبه 22 مرداد 1382, 16:10 عصر
http://www.dotnet247.com/247reference/articles/0/3154.aspx :wink:

و



Here is a stored proc that returns an error code:

CREATE PROCEDURE p_GetOrderByOrderNum
@ErrorCode INT OUTPUT,
@OrderNum INT
AS

SELECT
OrderID,
OrderNum,
OrderDate,
Etc
FROM
tblOrder
WHERE
OrderNum = @OrderNum

IF @@ERROR <> 0
SET @ErrorCode = @@ERROR
ELSE
IF @@ROWCOUNT <> 0
SET @ErrorCode = -1
GO


Here is C# code for call the proc:

using System.Configuration;
using System.Data;
using System.SqlClient;

...

int orderNumber = ######;

SqlConnection sqlConnection = new SqlConnection(ConfigurationSettings.AppSettings["ConnectionString"]);

sqlConnection.Open();
try
{
SqlParameter param;

SqlCommand cmd = new SqlCommand("p_GetOrderByOrderNum", sqlConnection);
cmd.CommandType = CommandType.StoredProcedure;

param = cmd.Parameters.Add("@ErrorCode", SqlDbType.Int);
param.Direction = ParameterDirection.Output;

param = cmd.Parameters.Add("@OrderNum", SqlDbType.Int);
param.Value = orderNumber;

SqlDataReader reader = cmd.ExecuteReader();
int errorCode = (int) cmd.Parameters["@ErrorCode"].Value;

DisplayResults();
}
finally
{
sqlConnection.Dispose();
}

Vahid_Nasiri
چهارشنبه 22 مرداد 1382, 19:29 عصر
برای اینکه اینجا کدها درست نمایش داده بشه فقط کافی است کد ها را انتخاب کنی و سپس روی دکمه ی code‌ که بالای صفحه ی نوشتن است کلیک کنی. اینطوری بهتر می شود....

اون تابع نمایش نتایج چیز مهمی نبود و خودت هم می تونی بنویسی.

shahabedeen
چهارشنبه 22 مرداد 1382, 21:42 عصر
CREATE PROCEDURE ErrorHandler
@ErrorCode INT OUTPUT,
@name varchar,
@password varchar
AS

SELECT
name,
password
FROM
tblSignup
WHERE
(name = @name and password=@password)

IF @@ERROR <> 0
SET @ErrorCode = @@ERROR
ELSE
IF @@ROWCOUNT <> 0
SET @ErrorCode = -1

GO
در متن برنامه تغییرات اعمال شد اما...
private void Button2_Click(object sender, System.EventArgs e)
{
string name = "";

//SqlConnection sqlConnection = new SqlConnection(ConfigurationSettings.AppSettings["ConnectionString"]);
SqlConnection s=new SqlConnection("Server=(local);uid=sa;pwd=;database=AQCh08");

s.Open();
try
{
SqlParameter param;

SqlCommand cmd = new SqlCommand("ErrorHandler", s);
cmd.CommandType = CommandType.StoredProcedure;

param = cmd.Parameters.Add("@ErrorCode", SqlDbType.Int);
param.Direction = ParameterDirection.Output;

param = cmd.Parameters.Add("@name", SqlDbType.Int);
//param= cmd.Parameters.Add("@password",SqlDbType.Int);
param.Value = name.ToString();

SqlDataReader reader = cmd.ExecuteReader();
int errorCode = (int) cmd.Parameters["@ErrorCode"].Value;

//DisplayResults();
}
finally
{
s.Dispose();
}
}

shahabedeen
پنج شنبه 23 مرداد 1382, 09:47 صبح
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Web;
using System.Configuration;
using System.Web.Configuration;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;

namespace AQCh08
{
/// <summary>
/// Summary description for WebForm1.
/// </summary>
public class WebForm1 : System.Web.UI.Page
{
protected System.Web.UI.WebControls.Label Label1;
protected System.Web.UI.WebControls.TextBox TextBox1;
protected System.Web.UI.WebControls.Label Label2;
protected System.Web.UI.WebControls.Button Button1;
protected System.Web.UI.WebControls.HyperLink HyperLink1;
protected System.Web.UI.WebControls.HyperLink HyperLink2;
protected System.Web.UI.WebControls.HyperLink HyperLink3;
protected System.Web.UI.WebControls.RequiredFieldValidator RequiredFieldValidator1;
protected System.Web.UI.WebControls.RequiredFieldValidator RequiredFieldValidator2;
protected System.Web.UI.WebControls.DataGrid DataGrid1;
protected System.Web.UI.WebControls.Button Button2;
protected System.Web.UI.WebControls.Label lblErrorMessage;
protected System.Web.UI.WebControls.TextBox TextBox2;

private void Page_Load(object sender, System.EventArgs e)
{
// Put user code to initialize the page here
if ( ! Page.IsPostBack ) // run 1 time
{
HttpCookie cookieUserAccess = Request.Cookies["cookieUserValid"];
if(cookieUserAccess != null)
{
if(Request.Cookies["cookieUserValid"].Value!="yes")
Response.Redirect("WebForm2.aspx");
}
else
Response.Redirect("WebForm1.aspx");
}
}

#region Web Form Designer generated code
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: This call is required by the ASP.NET Web Form Designer.
//
InitializeComponent();
base.OnInit(e);
}

/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.Button2.Click += new System.EventHandler(this.Button2_Click);
this.Button1.Click += new System.EventHandler(this.Button1_Click);
this.Load += new System.EventHandler(this.Page_Load);

}
#endregion
//-------------------------------------------------------------------------------
public string getConnectionStrFormWebConfig(string getConnectionStrFromWebConfig)
{
// the best way for getting state from web.config
return System.Configuration.ConfigurationSettings.AppSett ings[getConnectionStrFromWebConfig];
}


private void Button1_Click(object sender, System.EventArgs e)
{
HttpCookie cookieUserAccess = new HttpCookie("cookieUserValid");
cookieUserAccess.Value ="no";
Response.AppendCookie(cookieUserAccess);
SqlConnection MyConnection =new SqlConnection(getConnectionStrFromWebConfig("ConnStr"));
SqlDataAdapter MyCommand =new SqlDataAdapter("proc_find_user",MyConnection);
MyCommand.SelectCommand.CommandType=CommandType.St oredProcedure;
MyCommand.SelectCommand.Parameters.Add(
new SqlParameter("@UserName",SqlDbType.VarChar));
MyCommand.SelectCommand.Parameters.Add("@psw",SqlDbType.VarChar);
MyCommand.SelectCommand.Parameters["@UserName"].Value =TextBox1.Text;
MyCommand.SelectCommand.Parameters["@psw"].Value=TextBox2.Text;
DataSet DS =new DataSet(); MyCommand.Fill(DS,"tblSigup");
if (DS.Tables["tblSignup"].Rows.Count==0)
{
lblErrorMessage.Text="نام کاربر معتبر نیست و یا رمز صحیح نیست";
cookieUserAccess.Value ="no"; Response.AppendCookie(cookieUserAccess);}
else
{
cookieUserAccess.Value="yes";
Response.AppendCookie(cookieUserAccess);
Response.Redirect("WebForm5.aspx");
}
}
اما متاسفانه خطای زیر را گزارش می دهد:
E:\Inetpub\wwwroot\classes\Chap08\AQCh08\WebForm1. aspx.cs(87): The name 'getConnectionStrFromWebConfig' does not exist in the class or namespace 'AQCh08.WebForm1'

Vahid_Nasiri
پنج شنبه 23 مرداد 1382, 11:08 صبح
public string getConnectionStrFormWebConfig(string webConfigKey_ConnectionStr)
{
// the best way for getting state from web.config
return System.Configuration.ConfigurationSettings.AppSett ings[webConfigKey_ConnectionStr];
}

shahabedeen
پنج شنبه 23 مرداد 1382, 12:17 عصر
اینرا که در کد نوشته ام:

public string getConnectionStrFormWebConfig(string getConnectionStrFromWebConfig)
{
// the best way for getting state from web.config
return System.Configuration.ConfigurationSettings.AppSett ings[getConnectionStrFromWebConfig];
}

Vahid_Nasiri
پنج شنبه 23 مرداد 1382, 12:23 عصر
!! oooops

یک کمکی اشتباه شده!
من نوشته ام getConnectionStrFormWebConfig
شما form‌ را from کنید درست می شود! :oops: :lol: