PDA

View Full Version : صفحه login



axelful
چهارشنبه 10 مرداد 1386, 00:22 صبح
سلام
من یه صفحه add دارم که username , pass به دیتابیس اضافه می کنه و پسورد هم هش می کنه .کدش و پایین می ذارم .
حالا می خوام کاری کنم که کاربر نتونه با user و pass تکراری توی دیتابیس م add بشه .یعنی نام کاربری و پسورد هر کسی با بقیه متفاوت باشه .کدش و نمی دونم !!!
واسه صفحه login باید چیکار کنم اگه ممکن یه نمونه واسم بذارید .ممنون می شم .
منتظرم




using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;

using System.Data.SqlClient;

namespace ch03
{
///<summary>
/// Summary description for WebForm1.
///</summary>
public partial class WebForm1 : System.Web.UI.Page
{

protected void Page_Load(object sender, System.EventArgs e)
{
// Put user code to initialize the page here
}

#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()
{

}
#endregion

protected void btnAdd_Click(object sender, System.EventArgs e)
{
//1. Create a connection
string strConnString =
"server=localhost ; uid=sa; pwd=; database=MyTestDB";
SqlConnection objConn = new SqlConnection(strConnString);

//2. Create a command object for the query
string strSQL =
"INSERT INTO tblUserAccounts(Username,Password) " +"VALUES(@Username, @Password)" ;
SqlCommand objCmd = new SqlCommand(strSQL, objConn);

//3. Create parameters

SqlParameter paramUsername = new SqlParameter(
"@Username", SqlDbType.NVarChar , 50);
paramUsername.Value = txtID.Text;
objCmd.Parameters.Add(paramUsername);


//Encrypt the password
clsCrypt cr = new clsCrypt();



byte[] hashedBytes = new byte[16] ;


hashedBytes = cr.computeMD5Hash (txtPass.Text);


SqlParameter paramPwd = new
SqlParameter("@Password", SqlDbType.Binary, 16);
paramPwd.Value = hashedBytes;
objCmd.Parameters.Add(paramPwd);


//Insert the records into the database
objConn.Open();
objCmd.ExecuteNonQuery();
objConn.Close();

//clear
txtID.Text ="";

//Redirect user to confirmation page...

}

bool isUserValid(string userID, string userPass)
{
//1. Create a connection
string strConnString =
"server=localhost ; uid=sa; pwd=; database=MyTestDB";
SqlConnection objConn = new SqlConnection(strConnString);

//2. Create a command object for the query
string strSQL ="SELECT COUNT(*) FROM tblUserAccount " +
"WHERE Username=@Username AND Password=@Password";
SqlCommand objCmd = new SqlCommand(strSQL, objConn);

//3. Create parameters

SqlParameter paramUsername = new SqlParameter("@Username", SqlDbType.VarChar, 50);
paramUsername.Value = userID;
objCmd.Parameters.Add(paramUsername);

//Encrypt the password
byte[] hashedDataBytes = new Byte[16];
clsCrypt cr = new clsCrypt() ;
hashedDataBytes = cr.computeMD5Hash (userPass);

SqlParameter paramPwd = new SqlParameter("@Password",
SqlDbType.Binary, 16);
paramPwd.Value = hashedDataBytes;
objCmd.Parameters.Add(paramPwd);

//Insert the records into the database
objConn.Open();
int iResults = (int) objCmd.ExecuteScalar();
objConn.Close();

if( iResults == 1 )
//The user was found in the DB
return true;
else
//The user was not found in the DB
return false;

}

}
}

shahroozj
چهارشنبه 10 مرداد 1386, 08:01 صبح
قبل از اینکه کاربر را add کنی چک کن ببین همچین کاربری با این username , password تو دیتابیس هست یا نه اگر نبود add کن

ClaimAlireza
چهارشنبه 10 مرداد 1386, 08:53 صبح
دوست من password که اگه تکراری باشه که ایرادی نداره و نباید هم کسی بفهمه که پسورد مورد نظرش تکراری...

وگرنه امنیت میره زیر سوال....

برای userName هم راه حل کلی همونی که shahroozj گفتن.

اگه توضیحات بیشتری خاستی بگو...

ولی لطف کن کدهاتو با استفاده از [code] اینجا بذاری چون کد بالا رو نمیشه خوند.

موفق باشی....

Nightbat
چهارشنبه 10 مرداد 1386, 09:15 صبح
کد بالا واقعا قابل خوندن نیست ...

rtech
چهارشنبه 10 مرداد 1386, 09:42 صبح
لطف کنید این خط های اضافی رو پاک کنید تا بتونیم بفهمیم شما چی نوشتید !

nooshin_k
چهارشنبه 10 مرداد 1386, 09:59 صبح
یک select count بنویس با این شرط که username برابر username ای که کاربر وارد کرده باشه بعد مقدار این select را بگیر اگه مساوی یک بود پیغام بده تکراری هست وگرنه save کن

Nightbat
چهارشنبه 10 مرداد 1386, 10:18 صبح
یک select count بنویس با این شرط که username برابر username ای که کاربر وارد کرده باشه بعد مقدار این select را بگیر اگه مساوی یک بود پیغام بده تکراری هست وگرنه save کن
برای زیباتر شدن کارت هم می تونی از Ajax استفاده کنی

axelful
چهارشنبه 10 مرداد 1386, 10:43 صبح
مرسی از کمکتون .
من کدها رو می خواستم ضمیمه کنم اما نمی دونم چرا نمی شه . لینک زیر برنامه هش هست .



http://www.developercenter.ir/forum/attachment.php?attachmentid=506&d=1185912866
اگه ممکن از روشهایی که می گید یه نمونه واسم بذارید .

axelful
پنج شنبه 11 مرداد 1386, 00:19 صبح
برای userName هم راه حل کلی همونی که shahroozj گفتن.

اگه توضیحات بیشتری خاستی بگو...



اگه می شه کدش و واسم بذارید . من نمی دونم چجوری باید اینو چک کنم با sqlserver و .net.

fereshte22
پنج شنبه 11 مرداد 1386, 09:33 صبح
Dim strsql AsString
Dim con AsNew SqlConnection(ConfigurationManager.ConnectionStrin gs("ssgshopConnectionString").ConnectionString)
Dim dr As SqlDataReader
Dim cmd As SqlCommand
con.Open()
strsql = "Select * From register Where username= '" & username.Text & "'"
cmd = New SqlCommand(strsql, con)
dr = cmd.ExecuteReader
If dr.Read() Then
Response.Redirect("errorregister1.aspx")
con.Close()
dr.Close()
else: 'یں©§وارد کردن اطلاعات در دیتابیس

naeeme
پنج شنبه 11 مرداد 1386, 09:46 صبح
oCommand.CommandText = "SELECT [username] FROM [Users] WHERE [username] = '" + userName.ToLower() + "'";
if (oConnection.State != System.Data.ConnectionState.Open)
oConnection.Open();
oDataReader = oCommand.ExecuteReader(System.Data.CommandBehavior .CloseConnection);
if (oDataReader.HasRows)
strMessage="This username exist!";