Prolog can be run as CGI by using a PHP wrapper script which invokes the Prolog engine from within PHP. Prolog can be invoked indicating Prolog files to load and goals to initially achieve once loaded.
Executing the following in PHP can spawn a process which runs Prolog.
$cgiOutput = `sicstus --goal $goal. -l "$cgiPrologScriptToLoad"`;
This specific example is for Sicstus but most Prolog command lines have a similar format. Another possiblity is to setup Prolog as CGI, since any langauge can be CGI. I was running my code on a windows box and found it impossible for Prolog to direct the content to the command line and capture it for returning. If you’re going the unix route you may want to look at PiLLoWs guide.
For form postings you can catch the post in PHP or a scripting language and create a prolog formated file which is passed to the prolog script when invoked.
You may want to have Prolog maintain state. This can be achieved through using a database. The database that I have used is Berkeley DB which SICStus has built in support for.