Store login information in DB

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?
koozillaAsked:
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

gdemariaCommented:

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
koozillaAuthor Commented:
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
gdemariaCommented:

 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
Big Business Goals? Which KPIs Will Help You

The most successful MSPs rely on metrics – known as key performance indicators (KPIs) – for making informed decisions that help their businesses thrive, rather than just survive. This eBook provides an overview of the most important KPIs used by top MSPs.

koozillaAuthor Commented:
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
gdemariaCommented:

 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

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
Jeffrey CoachmanMIS LiasonCommented:
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
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Web Development Software

From novice to tech pro — start learning today.