Home Accessibility Courses Twitter The Mouth Facebook Resources Site Map About Us Contact
 
For 2023 (and 2024 ...) - we are now fully retired from IT training.
We have made many, many friends over 25 years of teaching about Python, Tcl, Perl, PHP, Lua, Java, C and C++ - and MySQL, Linux and Solaris/SunOS too. Our training notes are now very much out of date, but due to upward compatability most of our examples remain operational and even relevant ad you are welcome to make us if them "as seen" and at your own risk.

Lisa and I (Graham) now live in what was our training centre in Melksham - happy to meet with former delegates here - but do check ahead before coming round. We are far from inactive - rather, enjoying the times that we are retired but still healthy enough in mind and body to be active!

I am also active in many other area and still look after a lot of web sites - you can find an index ((here))
Dynamically watching your web site via a PHP wrapper

On our web site, we "wrap" all of our pages in a PHP shell, which allows us to reference extra information easily within any of our pages, provide up to date course and hotel data on every page, and keep a dynamic log of current visitors in a database. The wrapper is applied through Apache http server (mod_rewrite), passing in the name of the page that's been called as a parameter to the wrapper script. Here are the "key" lines from various files:

From our web server configuration:

RewriteRule ^(.*)\.htm wrap.php?page=$1&%{QUERY_STRING}

From the wrapper URL page:

include ("$_SERVER[DOCUMENT_ROOT]/../afdr/wrapname.php");

And from the page that's included to run the real page:

$status = eval (" ?>$inclusion<?php ");

Once those preliminaries have been set up, we can start using our extra level of control - we open our database connection and log the access, for example:

$logit = "INSERT INTO recent (tstamp, remoteaddr,
calledfor, prevpage, serverhost, uagent) values (".
  $nowsec . ", ".
  "\"$rip\", ".
  "\"$wanted\", ".
  "\"$whence\", ".
  "\"$server\", ".
  "\"$ua\") ";
@mysql_query($logit);


and a further query on the same table causes each newly logged record to (additionally) delete any records over 15 minutes old.

What do we do with that extra data? We have a page which we describes as our "Traffic Watch" - see [here] - which gives us a snapshot of how the server is running (when staff are logged in, they are give far more data!), for example. And we can (and do) also use the script to watch for high traffic levels from an individual IP address.

On yesterday's PHP course, I wrote an example showing how PHP makes use of MySQL tables, using this data. See [source] and [run it]. This page lets me see which pages have been called up recently, with the most popular ones first - a very useful monitoring tool for administrators and for the SEO (Search Engine Optimisation) team.

Although I wrote the new example on the PHP programming course, the more advanced setup of the table - with mod_rewrite, etc, is beyond those few days, and it's something that we cover on our PHP Techniques Workshop. Web server setup (if you're going to be an administrator) is covered on Linux Web Server or if you need to learn a bit of Linux too, on Deploying LAMP.



P.S. You'll see from the source code that I've eliminated certain URL patterns from the live demonstration. These days, I'm afraid, there are a number of automated scripts that attack web sites - either to spread viral infection, or to inject their content via security holes into your site. Such accesses just "bounce" off our server, but they are logged; I have eliminated them from the report in the sample program to starve them of the oxygen or publicity.
(written 2010-05-21)

 
Associated topics are indexed as below, or enter http://melksh.am/nnnn for individual articles
H305 - PHP - Web server configuration
  [1778] Pointing all the web pages in a directory at a database - (2008-08-30)
  [1938] Predictive Load Balancing - PHP and / or Java - (2008-12-13)
  [2478] How did I do THAT? - (2009-10-26)
  [2774] PHP - Object Oriented Design in use - (2010-05-21)
  [2981] How to set up short and meaningfull alternative URLs - (2010-10-02)
  [3143] On time - (2011-01-23)

A607 - Web Application Deployment - Apache httpd mod_rewrite
  [631] Apache httpd to Tomcat - jk v proxy - (2006-03-03)
  [755] Using different URLs to navigate around a single script - (2006-06-11)
  [934] Clustering, load balancing, mod_rewrite and mod_proxy - (2006-11-21)
  [1006] Apache httpd and Apache Tomcat together tips - (2006-12-24)
  [1009] Passing GET parameters through Apache mod_rewrite - (2006-12-27)
  [1207] Simple but effective use of mod_rewrite (Apache httpd) - (2007-05-27)
  [1376] Choosing between mod_proxy and mod_rewrite - (2007-10-02)
  [1381] Using a MySQL database to control mod_rewrite via PHP - (2007-10-06)
  [1636] What to do if the Home Page is missing - (2008-05-08)
  [1731] Apache httpd, MySQL, PHP - installation procedure - (2008-08-01)
  [1771] More HowTo diagrams - MySQL, Tomcat and Java - (2008-08-24)
  [1954] mod_rewrite for newcomers - (2008-12-20)
  [2094] If you have a spelling mistake in your URL / page name - (2009-03-21)
  [2555] Bookkeeping - (2009-12-29)
  [2728] Redirecting a home page using mod_rewrite - (2010-04-17)
  [2768] Carrying a long URL around - looking for memorable shorts - (2010-05-17)
  [2900] Redirecting a page - silent, temporary or permanent? - (2010-08-03)
  [3197] Finding and diverting image requests from rogue domains - (2011-03-08)
  [3339] Simplest ever proxy configuration? - (2011-06-28)
  [3568] Telling which ServerAlias your visitor used - useful during merging domains - (2012-01-04)
  [3753] Adding a passcode to a directory - (2012-06-05)
  [3862] Forwarding a whole domain, except for a few directories - Apache http server - (2012-09-17)


Back to
Graham Ellis - Summary of Training Record
Previous and next
or
Horse's mouth home
Forward to
PHP - Object Oriented Design in use
Some other Articles
Blowing our own trumpet
Regional Spatial Strategy and the next 20 years - Whence Wiltshire under the new government?
Declarations of interest - knowing where you stand with people
Dynamically watching your web site via a PHP wrapper
Graham Ellis - Summary of Training Record
Melksham to Calne by public transport
Melksham Chamber of Commerce - Presidents report to AGM
Easy - but for whom?
4759 posts, page by page
Link to page ... 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96 at 50 posts per page


This is a page archived from The Horse's Mouth at http://www.wellho.net/horse/ - the diary and writings of Graham Ellis. Every attempt was made to provide current information at the time the page was written, but things do move forward in our business - new software releases, price changes, new techniques. Please check back via our main site for current courses, prices, versions, etc - any mention of a price in "The Horse's Mouth" cannot be taken as an offer to supply at that price.

Link to Ezine home page (for reading).
Link to Blogging home page (to add comments).

You can Add a comment or ranking to this page

© WELL HOUSE CONSULTANTS LTD., 2024: 48 Spa Road • Melksham, Wiltshire • United Kingdom • SN12 7NY
PH: 01144 1225 708225 • EMAIL: info@wellho.net • WEB: http://www.wellho.net • SKYPE: wellho

PAGE: http://www.wellho.net/mouth/2773_Dyn ... apper.html • PAGE BUILT: Sun Oct 11 16:07:41 2020 • BUILD SYSTEM: JelliaJamb