how to make a very simple hello world cgi based html form using iinet isp
cgi hello world
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.
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
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
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
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
Browse to your home page
You will see a form. Type xxxx into it and click the OK button.
The URL line will change to
The page will display
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.
More by this Author
Learn one way how hackers could get into your web page and what to do to detect and stop that.
Palo Alto's Next Generation Firewall is described in detail.
The three pillars of security are: Confidentiality, Integrity and Availability. It's like a three-legged stool. If you remove one, then the whole is unbalanced.