Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How To Use C++ CGI Script?

Tags:

c++

html

cgi

I am currently enrolled in a web applications class at my college and we are learning about cgi scripts. I am having a hard time learning how to implement my CGI script. When I click on my link a window pops up asking me to download my helloworld.cgi file instead of just redirecting.

HTML:

<html>
    <body>
        <a href="/user/local/apache2/cgi-bin/helloworld.cgi">click me</a>
    </body>
</html>

C++:

#include <iostream>

using namespace std;

int main(){
    cout << "Content-type: text/html" << endl;
    cout << "<html>" << endl;
    cout << "   <body>" << endl;
    cout << "       Hello World!" << endl;
    cout << "   </body>" << endl;
    cout << "</html>" << endl;

    return 0;
    }

The CGI script is stored at /user/local/apache2/cgi-bin/helloworld.cgi

like image 963
Johnrad Avatar asked Jan 28 '11 02:01

Johnrad


People also ask

How do I use CGI files?

File locations/extensions for running CGI scripts The two most common ways are to change the file's name so it ends with a ". cgi" extension, or to place the file in a special directory on the server called "/cgi" or "/cgi-bin". Ask your ISP how the server is configured, and proceed accordingly.

What is CGI in C?

CGI is simply an interface between HTML forms and server-side scripts. It is not the only possibility--see the excellent tutorial How the web works: HTTP and CGI explained by Lars Marius Garshol for both an introduction to the concepts of CGI and notes on other possibilities. But CGI is widely used and useable.

How does CGI scripts work?

Basically, CGI works like this: A reader sends a URL that causes the AOLserver to use CGI to run a program. The AOLserver passes input from the reader to the program and output from the program back to the reader. CGI acts as a "gateway" between the AOLserver and the program you write.


1 Answers

You need to compile the C++ file, and call the result helloworld.cgi. C++ is not a scripting language -- you can't just deploy it to your server.

On a typical *nix system, name the C++ file helloworld.cpp

 gcc -o helloworld.cgi helloworld.cpp

Then put that file in your cgi-bin

Edit: you need two endl's after the last header item

  cout << "Content-type: text/html" << endl << endl;
like image 165
Lou Franco Avatar answered Sep 19 '22 08:09

Lou Franco