Solved

Store login information in DB

Posted on 2007-03-26
6
180 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
VMware Disaster Recovery and Data Protection

In this expert guide, you’ll learn about the components of a Modern Data Center. You will use cases for the value-added capabilities of Veeam®, including combining backup and replication for VMware disaster recovery and using replication for data center migration.

 

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

3 Use Cases for Connected Systems

Our Dev teams are like yours. They’re continually cranking out code for new features/bugs fixes, testing, deploying, testing some more, responding to production monitoring events and more. It’s complex. So, we thought you’d like to see what’s working for us.

Question has a verified solution.

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

Overview: This article:       (a) explains one principle method to cross-reference invoice items in Quickbooks®       (b) explores the reasons one might need to cross-reference invoice items       (c) provides a sample process for creating a M…
Phishing attempts can come in all forms, shapes and sizes. No matter how familiar you think you are with them, always remember to take extra precaution when opening an email with attachments or links.
In Microsoft Access, learn the trick to repeating sub-report headings at the top of each page. The problem with sub-reports and headings: Add a dummy group to the sub report using the expression =1: Set the “Repeat Section” property of the dummy…
Access reports are powerful and flexible. Learn how to create a query and then a grouped report using the wizard. Modify the report design after the wizard is done to make it look better. There will be another video to explain how to put the final p…

821 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