<html>
<head>
<title>CGI and SSI</title>
<meta name="keywords" content="">
</head>

<body bgcolor=#113377 text=#000000 vlink=#551a8b alink=#00c0ff link=#0000ee>




















































<table width=100% border=0>
<tr>
  <td valign=top>
  <table width=100% cellpadding=5 cellspacing=0 border=0>
    <tr><td bgcolor=white align=center>
       <img border=0 alt="" src="../../img/logga.gif" height=40 width=102>
    </td></tr>
    <tr><td valign=top>
      <img src=internal-roxen-unit width=1 height=3 alt="">
    </td></tr>
    <tr valign=top>
      <td bgcolor=white>




        <table cellpadding=0 cellspacing=0 border=0>
          
       <!--a1  Introduction manual.tmpl-->
    
            <tr><td><a href="../introduction/index.html"><img src="../../img/chapter.gif" border=0></a>&nbsp;</td>
	      <td><a href="../introduction/index.html"><if match="selected is "
		  ><b>Introduction</b></if
		><else>Introduction</else></a></td>
	    </tr>
    
          
       <!--a1  CGI and SSI manual.tmpl-->
    
            <tr><td><a href="index.html"><img src="../../img/chapter.gif" border=0></a>&nbsp;</td>
	      <td><a href="index.html"><if match="selected is selected"
		  ><b>CGI and SSI</b></if
		><else>CGI and SSI</else></a></td>
	    </tr>
    
          
	</table>
	
        <table cellpadding=0 cellspacing=0 border=0>
	  
      <!--b1  -->
    
	    <tr><td>&nbsp;&nbsp;<a href="cgi.html"><img border=0 src="../../img/page.gif"></a>&nbsp;</td>
	      <td><a href="cgi.html"><if match="selected is "
		  ><if match="manual.tmpl is tag.tmpl"
		    ><b>&lt;CGI&gt;</b></if
		  ><else><b>CGI</b></else></if
		><else
		  ><if match="manual.tmpl is tag.tmpl"
		    >&lt;CGI&gt;</if
		  ><else>CGI</else></else></a></td>
	    </tr>
    
	  
      <!--b1  -->
    
	    <tr><td>&nbsp;&nbsp;<a href="ssi.html"><img border=0 src="../../img/page.gif"></a>&nbsp;</td>
	      <td><a href="ssi.html"><if match="selected is "
		  ><if match="manual.tmpl is tag.tmpl"
		    ><b>&lt;&lt;!--#exec--&gt;&gt;</b></if
		  ><else><b>&lt;!--#exec--&gt;</b></else></if
		><else
		  ><if match="manual.tmpl is tag.tmpl"
		    >&lt;&lt;!--#exec--&gt;&gt;</if
		  ><else>&lt;!--#exec--&gt;</else></else></a></td>
	    </tr>
    
	  
        </table>

        <table cellpadding=0 cellspacing=0 border=0>
          
      <!--c1  -->
    
            <tr><td><a href="../pike-tag/index.html"><img border=0 src="../../img/chapter.gif"></a>&nbsp;</td>
	      <td><a href="../pike-tag/index.html"><if match="selected is "
		  ><b>&lt;pike&gt; tag</b></if><else>&lt;pike&gt; tag</else></a></td>
	    </tr>
    
          
      <!--c1  -->
    
            <tr><td><a href="../pike-scripts/index.html"><img border=0 src="../../img/chapter.gif"></a>&nbsp;</td>
	      <td><a href="../pike-scripts/index.html"><if match="selected is "
		  ><b>Pike script</b></if><else>Pike script</else></a></td>
	    </tr>
    
          
      <!--c1  -->
    
            <tr><td><a href="../modules/index.html"><img border=0 src="../../img/chapter.gif"></a>&nbsp;</td>
	      <td><a href="../modules/index.html"><if match="selected is "
		  ><b>Modules</b></if><else>Modules</else></a></td>
	    </tr>
    
          
      <!--c1  -->
    
            <tr><td><a href="../tag-modules/index.html"><img border=0 src="../../img/chapter.gif"></a>&nbsp;</td>
	      <td><a href="../tag-modules/index.html"><if match="selected is "
		  ><b>Parser modules</b></if><else>Parser modules</else></a></td>
	    </tr>
    
          
      <!--c1  -->
    
            <tr><td><a href="../location-modules/index.html"><img border=0 src="../../img/chapter.gif"></a>&nbsp;</td>
	      <td><a href="../location-modules/index.html"><if match="selected is "
		  ><b>Location modules</b></if><else>Location modules</else></a></td>
	    </tr>
    
          
      <!--c1  -->
    
            <tr><td><a href="../other-modules/index.html"><img border=0 src="../../img/chapter.gif"></a>&nbsp;</td>
	      <td><a href="../other-modules/index.html"><if match="selected is "
		  ><b>Other module types</b></if><else>Other module types</else></a></td>
	    </tr>
    
          
      <!--c1  -->
    
            <tr><td><a href="../id/index.html"><img border=0 src="../../img/chapter.gif"></a>&nbsp;</td>
	      <td><a href="../id/index.html"><if match="selected is "
		  ><b>Request information object</b></if><else>Request information object</else></a></td>
	    </tr>
    
          
      <!--c1  -->
    
            <tr><td><a href="../responses/index.html"><img border=0 src="../../img/chapter.gif"></a>&nbsp;</td>
	      <td><a href="../responses/index.html"><if match="selected is "
		  ><b>Responses</b></if><else>Responses</else></a></td>
	    </tr>
    
          
      <!--c1  -->
    
            <tr><td><a href="../library-methods/index.html"><img border=0 src="../../img/chapter.gif"></a>&nbsp;</td>
	      <td><a href="../library-methods/index.html"><if match="selected is "
		  ><b>Library methods</b></if><else>Library methods</else></a></td>
	    </tr>
    
          
	</table>

      </td>
    </tr>
    <tr><td height=100%>&nbsp;</td></tr>
  </table>
  </td>
  <td>
    <img src=internal-roxen-unit width=3 height=1 alt="">
  </td>

  <td valign=top>
    <table cellspacing=0 cellpadding=5 width=100% height=100% border=0>
    <tr>
      <td bgcolor=white>
       <b><font size=+2>CGI and SSI</font></b>

	<p>CGI, common gateway interface, and SSI, server side includes, are two
standards for running scripts by a web server, that work with with
practically any web server. Challenger support CGI with the
<i>CGI executable support</i> module and SSI with the
<i>Main RXML Parser</i> module.

<p>The good thing about CGI programming is that it works with any web
server. Unfortunately this is the only good thing about CGI and SSI.
For each request to a CGI script a program has to be run, something
rather costly of performance. CGI is not particularly easy to program;
many complexities of web application programming must be handled by
the CGI programmer. Nor are the security issues handled, the
programmer has to take care about them herself.

<p>Many of these shortcomings are however handled by languages and
programming environments that use CGI to access the web server. With a
good library CGI programming can become easy for the programmer. It is
however recommended to check how the library, language or environment
handles the security implications of web application programming, and
what the programmer needs to worry about.

<p>Challenger makes it possible to integrate CGI programming with
RXML. It is possible to embed calls to CGI scripts within RXML pages
by using SSI or the <tt>&lt;cgi&gt;</tt> tag. It is also possible for the
RXML parser post process output from CGI scripts. That way a CGI
script can make use of functionality from Challenger modules.

<p>SSI or the <tt>&lt;cgi&gt;</tt> tag can be used together with the
<tt>&lt;define&gt;</tt> tag to create new RXML tags that are handled via CGI
scripts.


      </td>
    </tr>
    </table>
  </td>
</tr>
<tr>
</table>
</body>
</html>
