Popular Posts

Sunday, 18 August 2013

LOGIN PAGE AND REGISTRATION PAGE WITH LOGIN LOGOUT TIME MAINTAINED



 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">
 
        &nbsp;</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">
                &nbsp;&nbsp;&nbsp;&nbsp;
                                    <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">&nbsp;&nbsp;&nbsp;&nbsp; </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">&nbsp;&nbsp;&nbsp;&nbsp; <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">&nbsp;&nbsp;&nbsp;&nbsp;
 <asp:TextBox ID="txtConfirmPass"
                    Text="" Width="29%" runat="server" TextMode="Password"></asp:TextBox>&nbsp;
                    <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">&nbsp;&nbsp;&nbsp;&nbsp;

//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">&nbsp;&nbsp;&nbsp;&nbsp;
                <asp:TextBox ID="txtMobile" runat="server" MaxLength="12"></asp:TextBox>
                <span style="color: #0000FF">&nbsp;(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">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                <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">&nbsp;&nbsp;&nbsp;&nbsp;
                <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" />
                                      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                                      <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>
                                      &nbsp;</td>
                              </tr>
                          </table>
                      </ContentTemplate>
               
              </td>
            </tr>
          
          <tr>
            <td colspan="2" align="left">&nbsp;</td>
          </tr>
          </table></td>
      </tr>
     
    </table></td>
  </tr>
  <tr>
    <td>&nbsp;</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">&nbsp;</td>
        <td width="22%" align="right" valign="middle">&nbsp;</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;
        }       
    }
}




So JUST COPY AND (!!!!UNDERSTAND.......) AND GET AMAZED ON YOUR INTELLIGENCE
IF ANY ERROR OR SUGGESTION ARE ALWAYS WELCOME....................................................................
THANKS FOR BEARING..............................................................................................................................
 



No comments :

Post a Comment