Bueno, les cuento. ¿Cómo puedo usar SSI desde un CGI? Me explico.
Tengo una web en CGI en Perl, la cual recoge datos (index.cgi?web=home.html).
Entonces, mi cgi imprime una página html (que está grabado en el CGI) y dentro de esta página quiero anexar otra (y la quiero llamar desde SSI) y además en esta misma quiero llamar a otro CGI.
Lo puedo hacer desde un .shtml, pero no es la idea ya que tendría que crear un shtml para cada página.
Mi web está compuesta por tres tablas; la del centro es la que cambia, las de las esquinas son estáticas.
Entonces, la idea es para entrar a la página HOME entro a index.cgi?web=home.htm; para entrar a descargas entro a index.cgi?web?descargas.htm ¿Me entienden la idea ? ¡Qué bueno!
Tengo todo listo, pero no sé cómo puedo usar SSI desde un CGI.
Using perl Syntax Highlighting
- #!/usr/bin/perl
- # ---------------------------- Recoge los parametros
- sub toma_entradas {
- local($clase);
- if ($ENV{'REQUEST_METHOD'} eq 'GET') {
- # Recoge el par name-value
- @pairs = split(/&/, $ENV{'QUERY_STRING'});
- }
- elsif ($ENV{'REQUEST_METHOD'} eq 'POST') {
- # Lee la entrada
- read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
- # Recoge el par name-value
- @pairs = split(/&/, $buffer);
- }
- foreach $pair (@pairs) {
- ($name, $value) = split(/\=/, $pair);
- # Desempaquetamos
- $name =~ tr/+/ /;
- $name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
- $value =~ tr/+/ /;
- $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
- # Eliminamos posibles intentos de ejecución de comandos
- $value =~ s/<!--(.|\n)*-->//g;
- $QUERY{$name} = $value;
- }
- $clase=0;
- while (($name, $value) = each(%QUERY)){
- $clase++;
- }
- return($clase);
- }
- $numero_entradas=&toma_entradas;
- # ---------------------------- Termina Recoge Parámetros
- print "Content-type:text/html\n\n";
- print("<html><table width=\"75%\">
- <tr>
- <td>MENU</td>
- <td><!--#include virtual=\"/web/".$QUERY{"web"}."\"--> </td>
- <td>MENU <!--#exec cgi=\"/cgi-bin/contador.cgi\"--> </td>
- </tr>
- </table></html>\n");
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4
Entonces lo que sucede al entrar al index.cgi?web=home.html, entramos a una página con la tabla, pero sin contenido (solo las palabras menú) y si vemos el código fuente aparece:
Using html4strict Syntax Highlighting
- <html><table width="75%">
- <tr>
- <td>MENU</td>
- <td><!--#include virtual="/web/home.html"--> </td>
- <td>MENU <!--#exec cgi="/cgi-bin/contador.cgi"--> </td>
- </tr>
- </table></html>
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4
Entonces me imprime la página pero no ejecuta mis instrucciones SSI. ¿Cómo puedo lograr que ejecute mis instrucciones SSI?
¿Tendría que modificar
print "Content-type:text/html\n\n";
indicando que es un shtm? ¿cómo lo hago?
¡OJO! MI SERVIDOR SOLO PUEDE EJECUTAR SSI en archivos .shtm .shtml.
Gracias, mis amigos