LOGIN PAGE
AND REGISTRATION PAGE WITH LOGIN LOGOUT TIME MAINTAINED
Or
KEEP LOGIN/ LOGOUT TIME AS WELL AS SESSION
INFOMATION /IPADDRESS OF LOGGED USER FROM DATABASE
Hello friends this is the basic neccesite for any
user based website to build an login /registration page .
The main problem comes in maintaining the session
information and logs entry of the logge user.In this tutorials we will see the
basic REGISTRATION And LOGIN page And HOW TO STRORE AND GET THE USER
INFORMATION FROM DATABASE .
STEP1. BUILDING REGISTRATION PAGE:
DATEBASE REQUIRED:
CREATE TABLE
[dbo].[KSNDMCUSERS](
[SYSUSERNO] [numeric](10, 0) IDENTITY(1,1) NOT NULL,
[USERID] [varchar](20) COLLATE
SQL_Latin1_General_CP1_CI_AS NULL,
[USERNAME] [varchar](100) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[PASSWORD] [varchar](100) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[USERSTATUS] [varchar](2) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
//NOT
NEEDED IF CATEGORY WISE NOT REQUIRED
//[GROUPCODE] [varchar](10) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[CREATED] [datetime] NULL,
[MOBILENO] [varchar](15) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[EMAIL] [varchar](50) COLLATE
SQL_Latin1_General_CP1_CI_AS NULL,
[ADDRESS] [varchar](500) COLLATE
SQL_Latin1_General_CP1_CI_AS NULL,
[LASTLOGIN] [datetime] NULL,
[PREVIOUSLOGIN] [datetime] NULL
) ON [PRIMARY]
CODE DESIGN PAGE:
IT’s easy and depends on the website need what they
want to store from user(Of COURSE THEIR BASIC INFOMATION ....not their pincodes
of banks...)
So here is the sample registration page:
<table width="100%"
border="0"
align="center"
cellpadding="0"
cellspacing="0">
<tr class="colorwhite">
<td class="menubg">
</tr>
<tr>
<td align="center" valign="top"><table
width="100%"
border="0"
cellspacing="0"
cellpadding="5">
<tr>
<td width="30%" valign="top"><table
width="100%"
border="0"
cellspacing="0"
cellpadding="5">
<tr>
<td colspan="2" class="style1"> USER REGISTRATION(* fields
are required)</td>
</tr>
<tr>
<td width="40%" style="text-align: right">User Name</td>
<td width="30%" style="text-align: left">
<asp:DropDownList ID="ddSex" runat="server"
style="margin-left:
0px">
<asp:ListItem>Mr.</asp:ListItem>
<asp:ListItem>Dr.</asp:ListItem>
<asp:ListItem>Miss</asp:ListItem>
<asp:ListItem>Mrs</asp:ListItem>
<asp:ListItem Value="M/s">M/s</asp:ListItem>
</asp:DropDownList>
<asp:TextBox ID="txtUserName" runat="server" Width="50%"></asp:TextBox>
<span style="color: #FF0066;font-size:30px" >*</span></td>
</tr>
<tr>
<td width="40%" style="text-align: right">Login ID</td>
<td width="30%" style="text-align: left"><label for="textfield" style="text-align: left"> </label><asp:TextBox ID="txtUserID"
runat="server"
Width="50%"></asp:TextBox>
<span style="color: #FF0066;font-size:30px">*</span></td>
</tr>
<tr>
<td width="40%" style="text-align: right">Password</td>
<td width="60%" style="text-align:
left">
<asp:TextBox ID="txtPassword"
Text="ksndmc" Width="29%" runat="server" TextMode="Password"></asp:TextBox>
<span style="color: #FF0066;font-size:30px">*</span></td>
</tr>
<tr>
<td width="40%" style="text-align: right">Confirm Password</td>
<td width="60%" style="text-align:
left">
<asp:TextBox ID="txtConfirmPass"
Text="" Width="29%" runat="server" TextMode="Password"></asp:TextBox>
<span style="color: #FF0066;font-size:30px">*</span>
</td>
</tr>
<tr>
<td width="40%" style="text-align: right">
<asp:Label ID="Label1" runat="server"
Text="User
Category"></asp:Label>
</td>
<td width="60%" style="text-align:
left">
//IF YOU WANT CATEGORY WISE USER USE THIS
//THE DATA HAS BEEN POPULATED FROM USERGROUP TABLE IN WHICH CATEGORY OF
//USERS ARE DEFINED.SKIP THIS FOR BEGINING............
// <asp:DropDownList ID="ddUserCat"
runat="server" //DataTextField="GROUPDESC"
DataValueField="GROUPCODE"
// style="margin-left: 0px">
// </asp:DropDownList>
</td>
</tr>
<tr>
<td width="40%"</td
style="text-align:
right">
Mobile Number<td width="60%" style="text-align: left">
<asp:TextBox ID="txtMobile" runat="server" MaxLength="12"></asp:TextBox>
<span style="color: #0000FF"> (Eg </span><span style="color: #FF0000">91</span><span
style="color: #0000FF">9833323051)</span></td>
</tr>
<tr>
<td width="40%"</td
style="text-align:
right; vertical-align: top;">
Address <td width="60%" style="text-align: left">
<asp:TextBox ID="txtAddress" runat="server" Width="271px" Height="82px"
MaxLength="1000" TextMode="MultiLine"></asp:TextBox>
<span style="color: #FF0066;font-size:30px">*</span></td>
</tr>
<tr>
<td width="40%" style="text-align: right">Email ID</td>
<td width="60%" style="text-align:
left">
<asp:TextBox ID="txtEmailID" runat="server" Width="271px" MaxLength="50"></asp:TextBox>
<span style="color: #FF0066;font-size:30px">*</span>
</td>
</tr>
<tr>
<td colspan="2" align="center" class="style1">
<ContentTemplate>
<table>
<tr>
<td>
<asp:Button ID="btnSubmit"
Width="83px"
Height="24px"
CssClass="button"
runat="server"
Text="Submit"
OnClick="btnSubmit_Click"
/>
<asp:Button ID="btnClose"
runat="server"
CssClass="button"
Height="24px"
Text="Close"
Width="83px"
PostBackUrl="~/Login.aspx"
/>
</td>
</tr>
<tr>
<td>
<asp:Label ID="lblError"
CssClass="Error"
Visible="false"
runat="server"
Text=""></asp:Label>
</td>
</tr>
</table>
</ContentTemplate>
</td>
</tr>
<tr>
<td colspan="2" align="left"> </td>
</tr>
</table></td>
</tr>
</table></td>
</tr>
<tr>
<td> </td>
</tr>
<tr>
<td align="left" valign="top" class="footer"><table
width="100%"
border="0"
cellspacing="0"
cellpadding="3">
<tr>
<td width="8%" valign="top"> </td>
<td width="22%" align="right" valign="middle"> </td>
</tr>
</table></td>
</tr>
</table>
1.1 SOME
VALIDTION YOU WOULS LIKE TO HAVE BEFORE USER SUBMITS THE PAGE::
<script language="javascript" type="text/jscript">
function
Submit(btn,frm)
{
var
message = "";
if(frm.elements['<%=txtUserName.UniqueID %>'].value=='')
message = message + ">> User Name cannot be blank. \n\n";
if(frm.elements['<%=txtUserID.UniqueID %>'].value=='')
message = message + ">> User Id. cannot be blank. \n\n";
if(frm.elements['<%=txtPassword.UniqueID %>'].value=='')
message = message + ">> Password Can Not be Blanck. \n\n";
if
(frm.elements['<%=txtPassword.UniqueID %>'].value!=
frm.elements['<%=txtConfirmPass.UniqueID %>'].value)
message = message + ">> Password does not match. \n\n";
if(frm.elements['<%=txtAddress.UniqueID %>'].value=='')
message = message + ">> Address Can Not be Blanck. \n\n";
if
(message !='')
{
alert(message);
return
0;
}
else
{
return
1;
}
}
</script>
1.2 NOW THE
CODE BEHIND PAGE TO INSERT INTO DB:
string strCon = ConfigurationManager.ConnectionStrings["dbconnection"].ToString();
protected void Page_Load(object
sender, EventArgs e)
{
this.SmartNavigation
= true;
// THIS LINE PERFORMS THE
VALIDATION ON BUTTON CLICK !!!!
btnSubmit.Attributes.Add("onClick", "javascript:if(Submit(this,this.form)==0){return
false;}");
if (this.IsPostBack == false)
{
//
FillUserCategory();
}
try
{
}
catch (Exception ex)
{
}
}
protected void btnSubmit_Click(object
sender, EventArgs e)
{
try
{
//TO CHECK IF USER ID IS ALREADY
BOOKED OR NOT AVAILABLE
if
(CheckUsers(txtUserID.Text) == true)
{
Response.Write("<script>alert('User already exist. Please
Check for another userid.')</script>");
return;
}
string
strExeSql = "INSERT INTO registraiontable(USERID,USERNAME,PASSWORD,USERSTATUS,GROUPCODE,CREATED,MOBILENO,EMAIL,ADDRESS)"
+
"VALUES ('" + txtUserID.Text + "','" + ddSex.Text + "" + txtUserName.Text + "','" + txtPassword.Text + "','01','" + ddUserCat.SelectedValue + "',GETDATE(),'','','','" +
txtMobile.Text + "','" +
txtEmailID.Text + "','" +
txtAddress.Text + "')";
strExeSql = Execute(strExeSql);
if
(strExeSql == "Success")
{
//
lblError.Text = "User Created Successfully";
Response.Write("<script>alert('User Created
Successfully.')</script>");
}
else
{
//lblError.Text
= "Error in creating new users.";
//
lblError.Visible = true;
Response.Write("<script>alert('Error in creating new
users.')</script>");
}
}
catch (Exception ex)
{
//Write
error information in ErrorLog.xml file
//
lblError.Text = "Error in creating new users.";
Response.Write("<script>alert('Error in creating new
users.')</script>");
}
}
/* public string
FillUserCategory()
{
try
{
DataSet
ds = Execute2DataSet("SELECT GROUPCODE,
GROUPDESC FROM USERGROUP WHERE GROUPCODE NOT IN('ADMIN','KSNDMC') ORDER BY
GROUPDESC");
ddUserCat.DataSource =
ds.Tables[0];
ddUserCat.DataBind();
return
"Success";
}
catch (Exception ex)
{
//Write
error information in ErrorLog.xml file
return
"Error";
}
}
*/
public bool CheckUsers(String
userid)
{
bool
isExist = false;
try
{
DataSet
ds = Execute2DataSet("SELECT USERID FROM
KSNDMCUSERS WHERE UPPER(USERID) = '" + userid.ToUpper() + "'");
if
(ds.Tables[0].Rows.Count > 0)
{
isExist = true;
}
else
{
isExist = false;
}
return
isExist;
}
catch (Exception ex)
{
//Write
error information in ErrorLog.xml file
return
isExist;
}
}
void
CleaFields()
{
txtUserName.Text = "";
txtUserID.Text = "";
txtEmailID.Text = "";
txtMobile.Text = "";
txtSupEmail.Text = "";
txtAddress.Text = "";
}
LOGIN PAGE:
THE DESIGN CODE :
BUILDING THE SIMPLE LOGIN
PAGE---------------------
<div class="box_wrapper">
<div class="textbox_outer">
<h3>Sign In</h3>
<div class="labels">
<asp:Label ID="lblUserName" runat="server" Text="UserName"></asp:Label>
</div>
<asp:TextBox ID="txtUserName" runat="server"/>
<asp:RequiredFieldValidator ID="rfvUser" ErrorMessage="Please enter Username"
ControlToValidate="txtUserName" runat="server" ValidationGroup="SUBMIT" />
<div class="labels">
<asp:Label ID="lblpassword" runat="server" Text="Password"></asp:Label>
</div>
<asp:TextBox ID="txtPWD" runat="server" TextMode="Password"/>
<asp:RequiredFieldValidator ID="rfvPWD" runat="server" ControlToValidate="txtPWD"
ErrorMessage="Please enter Password" ValidationGroup="SUBMIT"/>
<p><input type="checkbox" name="keep" value="login"/>Keep me logged in</p>
<p><a href="forgotpassword.aspx">Forgot your
Password?</a></p>
<asp:Button ID="btnSubmit" runat="server" Text="Submit" onclick="btnSubmit_Click"
ValidationGroup="SUBMIT" />
<p><a href="Register.aspx">Not a member yet? Click
here for Sign Up</a></p>
</div>
</div>
CODE
BEHIND:
Some
required libraries.....
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Data.SqlClient;
using System.Security.Cryptography;
public partial
class login
: System.Web.UI.Page
{
//Getting
the dbconnection from WEB.CONFIG file
string
strCon = ConfigurationManager.ConnectionStrings["dbconnection"].ToString();
string ComputerName;
string
IPAddress;
string
Browser;
protected void Page_Load(object
sender, EventArgs e)
{
//THE Request.ServerVariables
Do THE MAGIC
// The ServerVariables collection is used to retrieve the
server variable values.
ComputerName = Request.ServerVariables["REMOTE_HOST"];
IPAddress = Request.ServerVariables["REMOTE_ADDR"];
Browser = Request.ServerVariables["HTTP_USER_AGENT"];
this.SmartNavigation
= true;
}
protected void btnSubmit_Click(object
sender, EventArgs e)
{
try
{
//THE BELOW QUERY GIVES IS THE
LAST LOGIN TIME
DataSet
dsUsers = Execute2DataSet("SELECT
SYSUSERNO,USERID,USERNAME,GROUPCODE,ISNULL(LASTLOGIN,GETDATE()) LASTLOGIN FROM KSNDMCUSERS WHERE USERID = '"
+ txtUserName.Text + "' AND PASSWORD='"
+ txtPWD.Text + "'");
int
sysusrno;
if(dsUsers.Tables
[0].Rows .Count >0)
{
sysusrno =Int32 .Parse (dsUsers.Tables[0].Rows[0]["SYSUSERNO"].ToString());
Session["UserName"] = dsUsers.Tables[0].Rows[0]["USERNAME"].ToString();
Session["UserID"] = dsUsers.Tables[0].Rows[0]["USERID"].ToString();
Session["GroupCode"] = dsUsers.Tables[0].Rows[0]["GROUPCODE"].ToString();
Session["lastLogin"] = DateTime.Parse(dsUsers.Tables[0].Rows[0]["LASTLOGIN"].ToString()).ToString("dd-MMM-yyyy hh:mm:ss tt");
//THIS LINE DETERMINES WHEATHER
TO KEEP THE USER LOGED IN OR NOT
Session["IsLogged"] = true;
string
UpdateSQL = "UPDATE KSNDMCUSERS SET
PREVIOUSLOGIN=LASTLOGIN , LASTLOGIN=GETDATE() WHERE SYSUSERNO = "+
sysusrno +"";
Execute(UpdateSQL);
Session["sessionid"] = passwordEncryptSHA(dsUsers.Tables[0].Rows[0]["USERID"].ToString() + DateTime.Now.ToString("ddMMyyyyhhmmsstt"));
//AND HERE WE INSERT THE DETAILS
INTO DATABASE AGAIN
string
strExeSql = "INSERT INTO USERLOGS(SESSION_ID,STARTDATETIME,COMPUTER,IPADDRESS,USERID,BROWSER,SYSUSRNO,DISTRICTCODE,TALUKCODE,HOBLICODE)"
+
"VALUES('" + Session["sessionid"] + "',GETDATE(),'"
+ ComputerName + "','" + IPAddress
+ "','" + Session["UserID"] + "','"
+ Browser + "'," + sysusrno + ",'" + Session["DistrictCode"]
+ "','" + Session["TalukCode"] + "','"
+ Session["HobliCode"] + "')";
Execute(strExeSql);
if
(Session["GroupCode"].ToString ()
== "ADMIN")
{
Response.Redirect("~/Adminpage.aspx");
}
if
(Session["GroupCode"].ToString()
== "AGRUSR" || Session["GroupCode"].ToString() == "USER" || Session["GroupCode"].ToString() == "STGOVUSR" || Session["GroupCode"].ToString() == "EDUCATION" || Session["GroupCode"].ToString() == "PRIVATE" || Session["GroupCode"].ToString() == "CGUSR")
{
Session["IsLogged"] = false;
Response.Write("<script>alert('YOU NOT YET AUTHORIZED BY
ADMIN...PLEASE TRY AFTER SOMETIME!!!')</script>");
}
else
{
Response.Redirect("UserHomePage.aspx");
}
}else
{
Session["IsLogged"]
= false;
Response.Write("<script>alert('Invalid userid / password.')</script>");
}
}
catch (Exception ex)
{
}
}
public string passwordEncryptSHA(string
userid)
{
SHA1CryptoServiceProvider
sha = new SHA1CryptoServiceProvider();
byte
[]bytesToHash;
bytesToHash = System.Text.Encoding.ASCII.GetBytes(userid) ;
bytesToHash =
sha.ComputeHash(bytesToHash) ;
string
encPassword ="";
foreach
(Byte b in
bytesToHash)
{
encPassword += b.ToString ("x2");
}
return
encPassword;
}
public string Execute(string
argQuery)
{
try
{
SqlConnection
con = new SqlConnection(strCon);
SqlCommand
cmd = new SqlCommand(argQuery,
con);
if
(con.State == ConnectionState.Open)
{
con.Close();
}
con.Open();
cmd.ExecuteNonQuery();
con.Close();
return
"Success";
}
catch (Exception ex)
{
return
"Err";
}
}
public DataSet Execute2DataSet(string
argQuery)
{
DataSet
dt = new DataSet();
try
{
SqlConnection
con = new SqlConnection(strCon);
SqlCommand
cmd = new SqlCommand(argQuery,
con);
if
(con.State == ConnectionState.Open)
{
con.Close();
}
con.Open();
SqlDataAdapter
da = new SqlDataAdapter(argQuery,
con);
da.Fill(dt);
return
dt;
}
catch (Exception ex)
{
return
dt;
}
}
}
No comments :
Post a Comment