how to make a very simple hello world cgi based html form using iinet isp

cgi hello world

Feb 2010

It took me ages with the limited information available from iinet to work out how to get cgi scripts working. This is an unsupported feature from iinet so you are pretty much alone when it comes to troubleshooting, and the exact way that it has to be done is dependent on how iinet set up their apache web server. What you need to get started is a proven simple proof of concept that works on their servers.

This article describes the simplest proof-of-concept web page and cgi script that I can think of. The idea is to make it so simple that there is very little to go wrong.

This simplicity is important because as you will soon learn, like all roads lead to roam, all errors lead to one error message for cgi scripts.

500 Internal Server Error:

There is plenty already on the internet about this, so I won't repeat it here.

The aim is to give a simple example so that you can start off with a working baseline. Although I am using iinet, this information is likely to be useful for other ISPs.

Create the calling web page.

You need a web page that uses forms to call the cgi script. Create a plain text file

called testcgi.html

Here it is:

"http://www.w3.org/TR/html4/strict.dtd">
<html><head>
  
  <meta content="text/html; charset=ISO-8859-1" 
http-equiv="content-type">
  <title>testcgi</title>

  
</head><body>
 <form action="cgi-bin/mycgi.cgi">
 <input name="Firstname" type="text">
 <input value="OK" type="submit">
</form>
<br>

</body></html>


Strictly,we could get away without

<input name="Firstname" type="text">

but when you use this line, you can observe the URL field at the top of your browser and see how the contents of a form are passed to the cgi script. Our cgi script will NOT do anything with this data because that would complicate matters, and the idea here is to keep it simple. There are plenty of pre-build forms-parsers available already.

Now create the test cgi script

Here is the test script. It is very important to print the content type. In this case I am creating a plain text output, but if you are creating a web page, then the type should be HTML.

Create a plain text file called mycgi.cgi

#!/usr/bin/perl
print "Content-type: text/plain\n\n";
print "That worked\n";
exit(0);

Note: For HTML output, you need

print "Content-type: text/html\n\n";

Then of course you need to print valid and well formed HTML with the tags.

How to upload it.

I will make a few assumptions that you have come here already armed with a home page on iinet, and therefore know how to upload files and make directories on their server.

The script will fail if it has the wrong permissions, and it needs to be in a directory called

cgi-bin

which also has the correct permissions.

Using an ftp client such as filezilla,

  • upload testcgi.html to the top-level of your account.
  • create a directory called cgi-bin
  • upload mycgi.cgi to cgi-bin
  • change the permissions of cgi-bin to 755



Sample permissions:

testcgi.html ( file ) -rw-r--r--
cgi-bin ( directory ) drwxr-xr-x 

The cgi-bin directory contains your perl cgi script.

mycgi.cgi (file) -rwx-rx-rx


Testing

Browse to your home page

http://www.WhereEver-It-Is/~YourUserName/testcgi.html

You will see a form. Type xxxx into it and click the OK button.

The URL line will change to

http://www.WhereEver-It-Is/~YourUserName/cgi-bin/ 
mycgi.cgi?Firstname=xxxx

The page will display

That worked

Going further

You will need a forms parser. One can be found here. Start with this to understand how to pass data from the web page to the server's cgi script.

Then, when you get more confident, there is a tutorial about sending mail here.

If you know of any more links that are useful, please put them in the comments below.

Thank you!

More by this Author


Comments 5 comments

Manna in the wild profile image

Manna in the wild 6 years ago from Australia Author


6 years ago

test


 6 years ago

Hi 'd' - It seems your test worked. How is the weather in Caracas?


Pcunix profile image

Pcunix 5 years ago from SE MA

Use Cgi.pm

Some of the features that make this wonderfully easy are the ability to test on the command line, easy access to form variables ( param('yourvariable') ), support for cookies, nonparsed headers, being able to limit the overall amount of script data passed (eliminating some denial of service attacks) and crashing out more gracefully when you or your script screws up. .


Manna in the wild profile image

Manna in the wild 5 years ago from Australia Author

Thanks Pcunix

    Sign in or sign up and post using a HubPages Network account.

    0 of 8192 characters used
    Post Comment

    No HTML is allowed in comments, but URLs will be hyperlinked. Comments are not for promoting your articles or other sites.


    Click to Rate This Article
    working