Beware this content is over 8 years old and considered stale. It may no longer be accurate and/or reflect the understanding of the author but remains here for reference only. Please keep this in mind as you use this content.

I was working on a mini-script to display the results of a database and then log the results into a log file. One of the problems with the logging script was that every time the page was displayed, it would pull the results from the database and log the results.

I needed a way to prevent a user from accessing the update script randomly but also needed to be able to display the update button (which linked to the update script) once a full day had passed so that the result could be manually updated in the event that they became out of date (maybe due to a failed cron job, or if a user cannot create cron jobs).

The outcome was a small script which gets the last accessed time of a file (in this case, update.php) and subtracts it from todays date and time (using the timestamp). It then determines if the resulting difference is greater or less than a certain period (in this case, 24 hours or 86400 seconds).

If the difference of time (between todays date and file) is greater than a whole day (86400 seconds) it displays the update link, because it would be good to get fresh results for that day. If, however, the time difference is less than a whole day it does not display the link or alternative content.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// time check
function timeCheck()
{
$format = 'd-m-Y H:i:s'; // time format
$timestamp = date(time()); // current timestamp
$day = 86400; // 86400 seconds in a day
$file = fileatime('update.php'); // timestamp of files access time
$file_date = date($format, $file); // date of file
$today = date($format, time()); // todays date
$difference = $timestamp - $file; // calculate the difference between timestamps
if ($difference >= $day) {
// if a full day has passed...
} elseif ($difference < $day) {
// if a full day has not passed...
} else {
// catch all...
}
}

I will try and do a line-by-line explanation, if required but I think the script is pretty simple. If you have any points for improvement - feel free to post them here.