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.
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 -->
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 -->
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 -->
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 sourceforge.net website,
3/3/06 -- PHP Timeclock Development Status (again)
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
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.
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
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.
5/24/05 -- PHP Timeclock 0.9.4 is Released, Pulled, and RE-released
Fixed a bug in displaying the punch-in/out times on the main page if $show_current_users_only was set to "yes" in config.inc.php.
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.
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 sourceforge.net.
3/25/05 -- Website is Launched
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
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
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 config.inc.php.
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
config.inc.php, 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 config.inc.php and stuffed it into
timereport.php. All this variable did was provide an easy way to change the time
Removed the $left_side_width variable in config.inc.php. This variable set the width
for the left side of each page. The value for this variable has now been hard-coded
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.
Finally took the time to launch a website for this project. Nothing spectacular, but it's
3/21/05 -- PHP Timeclock 0.9.3 is Released
Added the ability to change a user's time entry in the administration section.
11/15/04 -- PHP Timeclock 0.9.2 is Released
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
Removed the $fqdn option in config.inc.php 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
Removed the $move_reports option in config.inc.php and replaced it with
$use_reports_password, an option to require a username and password to view the
Added a username and password option in config.inc.php to give some users the ability
to view the reports, but not access anything else in the admin section. These variables are
set in config.inc.php 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 config.inc.php.
Fixed timeclack.php so a php information message wouldn't occur if $use_passwd was set
to "no" in config.inc.php.
10/31/04 -- PHP Timeclock 0.9.1-1 is Released
Added the option to move all reports to the administration section. If $move_reports
is set to "yes" in config.inc.php, then the reports are moved to the administration
section of the app.
Moved the $use_passwd, $admin_username, $admin_passwd options in config.inc.php
from the 'required changes' section to the 'optional changes' section.
Removed the $website and $domain_name variables in config.inc.php. These were variables
for your website link and name in the bottom left of each page. They were removed for
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.
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 config.inc.php with the
10/14/04 -- PHP Timeclock 0.9, Initial Release
Added a field named 'employee_password' to the employees table. If "none" is chosen
for $use_passwd in config.inc.php, then this field is ignored.
Added a password blank in leftmain.php if $use_passwd = "yes" in config.inc.php.
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 config.inc.php with the $admin_username and $admin_password
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 config.inc.php with the $left_side_width variable.
Removed the $index variable in config.inc.php. This was a variable for your index
page. It provided no extra functionality unless you wanted to have a different
Changed the default example links for the $links variable in config.inc.php to
all point to slashdot.org. They were pointing to http://111/, http://222/, up to
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.
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.