Valid CGI Values


Valid CGI Values is (currently) a XHTML forms based technologie for validating CGI values submitted by these forms. It consists of a form parser that analyzes web forms and a package with validation functions.

The idea behind it is, that by parsing a XHTML form I get all/most fields, but since XHTML forms are not strictly typed and XForms are not very well supported by modern browsers, there is no chance telling explicit types for the field values. So there will be additional XML attributes to the XHTML form tags specifying certain types. The VCV parser reads this declarations and generates validating code (or may validate it "on the fly" for checking the submitted CGI values. Later revisions may also work with configuration files for XHTML pages that do not accept CGI request by forms but by URL.

Design Goals

VCV will be a simple XML extension to (current) XHTML forms (not XForms). You add additional attributes to form elements such as <input> or <select> that will be parsed using VCV. The VCV parser generates code for validating the submitted form values based on these attributes. To sum up the previous sentences and making them a bit clearer: One goal is simplicity, but security. As CGI technology, VCV will support more than one programming language, but they should provide some special features, such as support for regular expressions; so the current implementation will be in Perl and PHP, but other languages may be supported, too. This means, that language independency by a constant functionality is another goal.

As you see, the term XForms is used very often in relationship with VCV. I think that the idea behind XForms is a great advantage for web services, but also for the security of web services and CGI client-server interaction. Because XForms is a pretty new XML based technology, it is currently not supported by mainstream browsers like, Internet Explorer, Mozilla (and descandents), Opera and KHTML (Konquerer, Safari); there is currently only a XForms project for Mozilla, but they seem to have not released any product. So you have to use your own technology for having a web services validation that is comparable to what XForms will be in future. That is why I started developing VCV. The future will show, in which way VCV may exist, if XForms are generally implemented.

Sample XHTML form

There is now an updated conceptual idea how a XHTML form should be made for using VCV. This does not mean that VCV forces you to design in a specific way, the sample code only shows the important tags, attributes and their values of such a form.

About Using Services

The following subsections describe how the services provided on this page interact with services directly offered by

Project Homepage and Summary

SourceForge provides a project page (summary) for every project, where you can see the current project status, latest file releases, an overview over the bug tracker, …. They also give every project webspace for a project homepage like this. So note the difference between Summary (or Project Page) and (Project) Homepage.


Downloads of all “official” releases can (and should) be obtained from the Summaries sub-page file releases. For stable and production system use always the latest stable release. Only the latest (nightly) CVS snapshot will be available here for downloading, but it should be used only by developers, since it contains the current development status.


There will be an (real) online documentation available as soon as there are file releases. It is planned using the docmanager for the latest documentation out there, because project developers will not need to type “cryptical” cvs commands in a terminal, they can use the docmanager, too.

Service for Project Members

Other projects wanting to use VCV for their projects homepage is offerred a special service: The latest stable library release will be available for inclusion directly on the shell server; the file system path is /home/groups/v/vc/vcv/$lib/, so that you may put the following lines into your PHP script:


	// other includes

For Perl does this look not very different:

	#! /usr/bin/perl -Tw -I/home/groups/v/vc/vcv/perl

	use strict;
	use VCV;

	# continue working ...

	exit 0;