PHP Timeclock -- What Is It?

It is a simple yet effective web-based timeclock system. It allows you to track all employee time as well as upcoming vacations and more, and it can replace manual sign-in/sign-out sheets.

An administration piece is included which allows an administrator to add or delete users, change a user's time or password (if using passwords is enabled), and hide the reports from your users where only an admin or a reports user has access to them. These reports can be run to show daily activitiy or for a range of dates, and can be run for all users, or individually for each user.

This product is distributed under the GPL. This program is free software; you can redistribute it and/or modify it under the terms of the GNU GeneralPublic License version 2, as published by the Free Software Foundation.

Latest News:

6/20/06 -- PHP Timeclock 1.03 is released

This is a bug fix release that resolves issues with the Audit Log and Total Hours reports. Details are outlined in the CHANGELOG, which you can find here --> CHANGELOG.

6/5/06 -- PHP Timeclock 1.02 is released

This release includes a few minor bug fixes and a few minor enhancements. These bug fixes and enhancements are outlined in the CHANGELOG, which you can find here --> CHANGELOG.

3/23/06 -- PHP Timeclock 1.01 is released

This release includes 5 minor bug fixes and a few minor enhancements. These bug fixes and enhancements are outlined in the CHANGELOG, which you can find here --> CHANGELOG.

3/7/06 -- PHP Timeclock 1.0 is released

This is a major enhancement release. The CHANGELOG is usually outlined here when there is a new release, but this time around you'll need to take a look at the CHANGELOG on the website, CHANGELOG.

A few of the new items included in this release are:

1. Dates and times can be displayed in many various different formats throughout PHP Timeclock.
2. Reports can be run to total users' time for a given period of time. This is a big addition as a company's payroll can be processed based on this report. This has been sorely lacking in prior releases.
3. Users can be designated to different offices and groups.
4. Users' time can be edited as in prior releases, but time can now be added and deleted for each user.
5. Each user can be setup with Sys Admin, Time Admin, and/or Reports permissions

The rest are detailed in the CHANGELOG.

3/3/06 -- PHP Timeclock Development Status (again)

A new release of PHP Timeclock is scheduled to be uploaded on the sourceforge website sometime next week.

11/2/05 -- PHP Timeclock Development Status

Development for the PHP Timeclock project has been slow, but is not dead. Quite the contrary, as a new release is scheduled for the end of the year, with it slipping maybe sometime into January. Quite a few new features will be added, along with a complete redesign of the admin piece. Items to be added include: the ability to create/edit/delete punch-in/out statuses, the option to insert your users into different groups or offices, the ability to add/delete a punch-in/out time (not limited to just editing a time), the ability to allow users access to the admin piece and reports based on their login, the option to display the date and time in a variety of different formats, and hopefully a report that will tally a user's hours. It has been quite a while since the last release, and other new features are also in the works, so thank you for your interest in this project.

5/27/05 -- PHP Timeclock 0.9.4-1 is Released

This is a bugfix release. Fixed a bug in the time report - if the "To" and "From" dates were the same, either no punch-in/out times would display, or just some of the times would display.

Fixed a bug in displaying the punch-in/out times on the main page if $show_current_users_only was set to "yes" in Either none of the times would display, or just some of the times would display. This bug was also found when attempting to change a user's time.

Added "This script also makes other minor changes to the database." to the database upgrade script description in dbupgrade.php.

5/24/05 -- PHP Timeclock 0.9.4 is Released, Pulled, and RE-released

If this release was downloaded before 13:43 UTC on 5/24/05, then you will need to download it again. A bug was found in the initial release when posting time. The app was not reloading the homepage correctly, and a refresh of the page after posting time would update the posting user's time in the db each time the page was refreshed. This has now been corrected in the latest release hosted on

This release requires the use of at least version 4.1.0 of PHP. This was done to move from the use of long PHP predefined variable arrays ($HTTP_*_VARS) to PHP superglobal variable arrays ($_*), which were introduced in PHP 4.1.0. With PHP5's ability to disable the ($HTTP_*_VARS) arrays using 'register_long_arrays=Off' in php.ini, i felt it was time to make the switch everywhere in the code.

Changed the way time was being stored in the database from a mysql timestamp to a unix timestamp. This provides the ability to utilize timezone functionalities and quite possibly other functions for future use.

Added a database upgrade script within the app, dbupgrade.php. You can now choose to upgrade the database via the command line using the mysql statments included in upgrade_database.sql (as you could have always done), or go to the administration section of the app and choose to upgrade the db from there. FOR THIS RELEASE, YOU WILL NEED TO USE THE UPGRADE SCRIPT, dbupgrade.php. This is because of the need to convert all of your current mysql timestamps into unix timestamps. Yes, you CAN do this without the script, but the script also takes into account the timezone of the server so the new unix timestamps will be stored in GMT.

Added the ability to display punch-in/out times in 3 different ways: 1) times can now be displayed according to the end user's timezone. This is done with the use of javascript and the addition of a cookie to the user's system. 2) times can be displayed according to the web server's timezone. This is the way times in all previous versions of the distribution have been displayed (it is also the default setting of this release). 3) times will be displayed in GMT if neither of the two above options are chosen. This is set in

Added an option to display current, local weather stats. This is done with code from the PHP Weather project by Martin Geisler and others. PHP Weather is licensed under the GPL.

When printing the main page or the time report, the date and time it is run is reflected according to how you chose to display your punch-in/out times via, instead of just assuming you want to use the timezone of the webserver. This affects ONLY the printouts of these pages.

Removed the $time_entry_title variable in and stuffed it into timereport.php. All this variable did was provide an easy way to change the time report title.

Removed the $left_side_width variable in This variable set the width for the left side of each page. The value for this variable has now been hard-coded into leftmain.php.

Combined leftmain.php and timeclack.php into one file, leftmain.php.

Fixed a bug where the wrong time and date were being reported in an error message when a user's time was changed.

Performed general code cleanup on a number of files.

3/25/05 -- Website is Launched

Finally took the time to launch a website for this project. Nothing spectacular, but it's functional.

3/21/05 -- PHP Timeclock 0.9.3 is Released

Added the ability to change a user's time entry in the administration section.

When notes are included in a user's time entry, they are input into the database in all lowercase, instead of just being displayed on the screen as lowercase. They were being strung to lowercase on the screen after they were entered into the database, but they are now instead input into the database as lowercase. This is almost not worth mentioning, but it is a minor change, thus it's here in the changelog.

Renamed the Employee Report to Time Report, and added the option to run this report for all usernames. Doing this negated the need for having the Monthly Report, Today's Report, and Date Report. These reports have been removed.

Moved the Timeclock Admin link to from the left side of the page to the far right part of the topbar and renamed it to Administration.

Combined topmain.php and topmain_alt.php into one file, and removed topmain_alt.php.

Fixed a formatting problem on the home page and the reports where the rows of data were displaying a couple of spaces more to the left than the column headings. Fixing this also fixed an odd bug where if you refreshed the home page repeatedly, the rows of data would sometimes be extremely out of line with the column headings.

Added some security to all form fields by disallowing certain characters to be used when filling in those fields.

Limited the size of the form fields to match the size of the corresponding fields in the database.

Removed the $fqdn option in as it was pretty much a useless option anyway. It was a variable to provide a fully qualified domain name for the path to the distribution files.

Removed the $move_reports option in and replaced it with $use_reports_password, an option to require a username and password to view the reports.

Added a username and password option in to give some users the ability to view the reports, but not access anything else in the admin section. These variables are set in with the $reports_username and $reports_password variables. This is not the best way to allow authentication when accessing the reports, but it is one of the easiest. Another way of accomplishing the same goal is adding a 'groups' field in the db and assigning everyone to a group and requiring authentication via the users' username and password. I do not want to implement it this way at this time.

Added the ability to display only the current day's activity on the front page instead of the last entry from each user. This is done with the $show_current_users_only option in

11/15/04 -- PHP Timeclock 0.9.2 is Released

Fixed timeclack.php so a php information message wouldn't occur if $use_passwd was set to "no" in

Added the option to move all reports to the administration section. If $move_reports is set to "yes" in, then the reports are moved to the administration section of the app.

Moved the $use_passwd, $admin_username, $admin_passwd options in from the 'required changes' section to the 'optional changes' section.

Removed the $website and $domain_name variables in These were variables for your website link and name in the bottom left of each page. They were removed for aesthetic reasons.

Added the word 'New' to the 'Password(s)' column heading in chngpasswd.php. The heading now reads 'New Password(s)' instead of 'Password(s)'.

Fixed the 'Notes' column on all pages to align more to the left instead of centering itself in the middle of the column.

Added better printing functionality for IE (Internet Explorer 4.x and higher) via css for the reports. The reports still print unter Mozilla/Firefox, they're just not formatted as nicely with the column headings on each page.

10/31/04 -- PHP Timeclock 0.9.1-1 is Released

Fixed a bug where headers were sometimes being sent twice.

10/26/04 -- PHP Timeclock 0.9.1 is Released

Added the option to use passwords for submitting an employee's status. The php crypt() function is used for this. Unfortunately, doing it this way forces you to add users with passwords and/or change passwords using ONLY this app or some other php script using the crypt() function. Adding passwords directly into the mysql database will not work. This option is set in with the $use_passwd variable.

Added a field named 'employee_password' to the employees table. If "none" is chosen for $use_passwd in, then this field is ignored.

Added a password blank in leftmain.php if $use_passwd = "yes" in

Added a Timeclock Administration section which contains scripts to add/delete users and to change users' passwords. This section is password protected.

Added an admin username and password for the Timeclock Administration section. These variables are set in with the $admin_username and $admin_password variables.

Added the option to change the width of leftmain.php (the section where you sign-in). This is added only to make the width easier to change, in case you have a few usernames that are so long that they're wider than the current setting. This option is set in with the $left_side_width variable.

Removed the $index variable in This was a variable for your index page. It provided no extra functionality unless you wanted to have a different index page.

Changed the default example links for the $links variable in to all point to They were pointing to http://111/, http://222/, up to http://666/.

Combined daterptinfo.php and daterpt.php into one page, did the same for employeerpt.php and employeerptinfo.php, currmonthrpt.php and currmonthrptinfo.php, todayrpt.php and todayrptinfo.php, current_status.php and timeclock.php.

Removed alink and avisited classes from default.css, as they were not being used anywhere in the code anyway.

Rewrote the code so it wouldn't matter if register_globals or magic_quotes_gpc are enabled/disabled in your php.ini.

10/14/04 -- PHP Timeclock 0.9, Initial Release

PHP Timeclock is designed to replace written sign-in/sign-out sheets or a manual timeclock/punchclock. It is written in php and utilizes a mysql database. It shows the current status of everyone in the database, and reports can be run to view your time.

Copyright (C) 2006 Ken Papizan email: