Solved

Store login information in DB

Posted on 2007-03-26
6
179 Views
Last Modified: 2013-12-16
Hi, is there a way that i can capture the username,  time, date, and Client IP of someone logging on to a secure page on my site - with no end-user input? Currently, i am using:  
<cfset clientIP = cgi.REMOTE_ADDR>
<cfoutput>Client IP Address:  #CGI.REMOTE_ADDR#</cfoutput>
...using this code i can display the information to the user, but what i really want to do is capture every login in the database, automatically...So, the end-user logs in, sees what i have up there, and logs out.  without any input from the end- user, i would like to get an "idea" of who logged on, when, etc. and the information would be stored automatically. I have added a table in MS Access, relative to my other tables, to store the info.
Any ideas?
0
Comment
Question by:koozilla
  • 3
  • 2
6 Comments
 
LVL 39

Expert Comment

by:gdemaria
ID: 18797303

Sure, after you validate the login, simply insert a record into the database with the username (or ID) as well as now() for the current date/time and cgi.remote_addr for the IP address.  

insert into logins ( loginDate, userName, IPaddress)
values (#now()#, '#username#', '#cgi.remote_addr#')
0
 

Author Comment

by:koozilla
ID: 18797710
Sounds great, but i have to admit that i am a little "too green"... how exactly should i add that information?
currently, i have an "index.cfm" page that is the login, then it goes to the "presentation.cfm" page.
I am guessing that the code you gave me would go on the "presentation.cfm" page... probably above the HTML tag....
am i on the right track here?  i am getting a syntax error... but that might be b/c the #Now()# date is different than what the DB is looking for...

<cfquery name="qData" datasource="MyDatasource">
SELECT *
FROM tblDataX
WHERE UserName='#Session.MM_Username#'
</cfquery>
<cfquery datasource="MyDatasource">
INSERT INTO tblDataX (loginDate, userName, IPaddress)>
values (#now()#, '#username#', '#cgi.remote_addr#')
</cfquery>
0
 
LVL 39

Expert Comment

by:gdemaria
ID: 18799921

 No problem, when a user is logging in, you likely have a query to validate their username and password against the form field.   If the user has entered the correct username and password, you then probably continue on to create the session variable.  At that same time (a successful login) I would place the insert statement.   You don't want to place the insert on a page where the user just visits because it will login his page visits not his login, so only place the insert when you process the login.

 The query you show is from tblDataX, is that the real name?  I ask because you are fetching from that table and then inserting into the same table in the next query.  Not sure why.    If tblDataX is the table that holds the user's login information, you DO NOT want to insert their activity into that table, you want to add it into another table.. something like this...


<cfquery name="qData" datasource="MyDatasource">
 SELECT *
 FROM   Users
 WHERE UserName='#form.MM_Username#'
</cfquery>
<cfif qData.recordCount eq 0>
   ... error, user does not exist
<cfelseif qData.passwrd neq form.passwrd>
   ... invalid login
<cfelse>
   ... success, now create the user's session ...
  <cfset session.mm_username = form.username>

   ... success, now record a successful login ...
  <cfquery datasource="MyDatasource">
    INSERT INTO UserLogins (loginDate, userName, IPaddress)>
    values (#now()#, '#username#', '#cgi.remote_addr#')
  </cfquery>
</cfif>




0
DevOps Toolchain Recommendations

Read this Gartner Research Note and discover how your IT organization can automate and optimize DevOps processes using a toolchain architecture.

 

Author Comment

by:koozilla
ID: 18801761
YOU ROCK!!! thank you!!
one more question...  the information is going into an Access DB.. the "Date" is showing up but not the "Time" (hh:mm:ss:).  Any ideas?
0
 
LVL 39

Accepted Solution

by:
gdemaria earned 500 total points
ID: 18801894

 I don't really know access that well, but perhaps this change to the coldfusion would work.

 Take out #now()# and replace with

 #createODBCdateTime(now())#
0
 
LVL 74

Expert Comment

by:Jeffrey Coachman
ID: 18805192
koozilla:,

The Now() function should return the date and time.

If not, then you may have to set the "Format" property of the Date field in the Access table to something like this:
    yyyy-mm-dd hh:nn:ss AM/PM
... to display the date and time.

Hope this helps

Jeff Coachman
0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

I see at least one EE question a week that pertains to using temporary tables in MS Access.  But surprisingly, I was unable to find a single article devoted solely to this topic. I don’t intend to describe all of the uses of temporary tables in t…
CFGRID Custom Functionality Series -  Part 1 Hi Guys, I was once asked how it is possible to to add a hyperlink in the cfgrid and open the window to show the data. Now this is quite simple, I have to use the EXT JS library for this and I achiev…
Learn how to number pages in an Access report over each group. Activate two pass printing by referencing the pages property: Add code to the Page Footers OnFormat event to capture the pages as there occur for each group. Use the pages property to …
With Microsoft Access, learn how to start a database in different ways and produce different start-up actions allowing you to use a single database to perform multiple tasks. Specify a start-up form through options: Specify an Autoexec macro: Us…

864 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

18 Experts available now in Live!

Get 1:1 Help Now