Safeperl
When it comes to Oxford University personal web space, the University Computing Services have some very hard-and-fast rules about CGI scripting. This includes a battened-down Perl interpreter environment, and the masking of several key functions and keywords. Filesystem manipulation is banned. And it goes on. So I wrote the following, which work within those constraints...
ShojaForum
Having been webmaster for a couple of societies, I've been asked to set up and manage a forum-type system a couple of times. This has invariable entailed linking out to some random forum host that will let us run a message board on their system - it's clumsy, it costs money, and it's hard to figure out. On the other hand, ShojaForum works directly within University webspace - if you'd like a forum for your society's webpage, or just one of your own, try it out!
Read the included README.txt file to figure out what to do, although it should be ridiculously direct and simple to set up!
Licensed under a BSD-like license.
ShojaSite, a content management system
You can download a zip archive with all you need to get started. There used to be a demonstration site on my University webspace, but that expired some time ago -- I'm afraid the only documentation left is the code itself.
As with all my code, I invite criticism, especially from those more experienced than I!
Licensed under a BSD-style license.
XMLDBParser, a database module
This is really a Perl module of sorts, but since it's written for Safeperl it's meant to be copy-pasted into a Safeperl script. It provides a class, XMLDBParser, which should abstract away most of the issues with trying to maintain a database of any kind in a Safeperl environment.
Just give it a blank file, and it will use an XML-like format to store almost arbitrary data. (This is a refinement of the system used by the latest ShojaSite, which seems to be holding up quite well, so it should be robust).
Licensed under the GNU Lesser General Public License.
Download / View Source - it's labeled with an additional .txt extension to allow it to render in a browser.
Cookie, a class for handling cookies
It took me bit of research to find the actual HTTP headers sent to set cookies, and rather than write and rewrite the routines several times I've encapsulated them in a simple class. The Cookie object can set cookies (allowing just name and value, or more parameters, to be set) and provide information on existing cookies.
Licensed under the GNU Lesser General Public License.
Download/ View Source - it's labeled with an additional .txt extension to allow it to render in a browser.