Click to See Complete Forum and Search --> : Invoking CGI script from html pages


jimbob2812
03-27-2003, 03:28 AM
Ok, the most basic question possible...
How do I invoke my perl CGI scrips from .html pages?

1) I know I can do this from a form button
(eg. html page contains a "post a comment type form thing"
with a submit button that calls the CGI script to send an email)

2) Similarly, I know I can do this from a hyperlink
(eg. html page contains an <a> tag with the href pointing
towards the CGI script which will output the required page)

3) I think it can be done via server side includes (SSI) but I
have never managed this in practice.

An example of my feeble attempts is -
<p>Before the include</p>
<!--#exec cgi="http://www.netmotorway.co.uk/cgi-bin/james/mycount/count2.pl"-->
<p>After the include</p>
However...this does not work, all I get is the text within the <p> tags
...I have also tried "include" in place of the "exec"...

Surfing for answers, I suspect this is because the page must
be called .shmtl or something but I have never understood why!

Is this true ?
Will all servers allow this?
Can a normal web page with a .html extension have SSI?

But what I am looking for is a way to get a normal .html
extension web page to invoke the CGI script and then
continue with the rest of the page...can this be done ???

jeffmott
03-27-2003, 09:46 AM
Surfing for answers, I suspect this is because the page must
be called .shmtl or something
.shtml, and it has to be that because the server will only check files of that extension for SSI commands.

but I have never understood why!Just as .php files are parsed as PHP and .asp files are parsed as ASP. The extension is your way of telling the server to interpret SSI commands in that particular file.

Can a normal web page with a .html extension have SSI?Generally speaking, no. But this does depend on the server configuration.

But what I am looking for is a way to get a normal .html
extension web page to invoke the CGI script and then
continue with the rest of the pageA work around would possibly be to use a frame that takes up 0% of the window that points to the CGI script. Though it would be much easier and better to just rename the extension to .shtml ;)

smoker2
04-11-2003, 01:23 PM
why must it be .html ?
If its just appearance you're after then why not make the cgi generate the page in the first place and finish the script with print "Location: $url\n\n";
where $url is the page you just generated.

If its your server you can hack the apache httpd.conf to allow .html pages to execute server scripts as well as .shtml

Also you can make it so that you don't need .pl or .cgi as an extension for a script so you could call it like http://www.somesite/cgi-bin/script?name=bert

You dont even need to be in the cgi-bin if you hack the httpd.conf file correctly

Otherwise, just rename the page to whatever.shtml

Also, sometimes, exec cgi doesn't work (on some servers) you may have to use #include virtual instead

alan

divaone
05-05-2003, 06:15 PM
If I may,

Also, your server may require that you use your web path for included files. Instead of

<!--#exec cgi="http://www.netmotorway.co.uk/cgi-bin/james/mycount/count2.pl"-->

you may have to use

<!--#exec cgi="path/to/your/cgi-bin/james/mycount/count2.pl"-->