Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   Programación General (http://www.forosdelweb.com/f14/)
-   -   aplicacion CGI (http://www.forosdelweb.com/f14/aplicacion-cgi-569431/)

Alphabravo 26/03/2008 10:05

aplicacion CGI
 
Hola una pregunta es que quiero hacer una aplicacion en CGI que se conecte a una base de datos con parametros por ejemplo


http://localhost/cgi_bin/conectar.ex...er01&pass=1234

por ejemplo asi crear en conectar.exe que reciba esos parametros de usuario y contraseña para conectarse a una base de datos y que le regrese el usuario conexion realizada hola user01

o otro que sea por ejempo

http://localhost/cgi_bin/eliminar.ex...er01&pass=1234

que te elimine el usuario de la base de datos

gracias alguien podria ayduarme? gracias

el.exe lo puedo hacer en C o C# o Visual no ? pero no se mas o menos como :(

monoswim 26/03/2008 11:23

Re: aplicacion CGI
 
Acá vemos más que nada el lenguaje PERL, es muy bueno y lo puedes ejecutar tanto en windows como en linux...Y es muy parecido a C, pero mucho más fácil...quedaría como

hjttp://localhost/cgi-bin/alimiar.cgi?pass=1234

Si estás en windows fijate de instalar perl desde www.activeperl.com y en linux ya viene instalado...

Espero que te sirva

Saludos

Alphabravo 26/03/2008 22:39

Re: aplicacion CGI
 
hola entonces el .exe tengo que hacerloen perl? y ese archivo lo meto a cgi? y cuando lo ejecute por ejemplo

alimiar.cgi?user=user01&pass=1234

si el usuario existe en la base de datos que este me imprima hola user01 y si no esta que diga no existe usuario? si se puede ¿ usando mysql y perl? como seria con mysql perl y la apicacion en per cgi?? tienen algun ejemplo?

por ejemplo aqui encontre perl y mysql

Cita:

#!/usr/bin/perl # definimos el sheband

use strict; # definimos el pragma estricto
use DBI(); # pedimos que disponga a carguar el DBI

# Conectamos a la DB.
my $dbh = DBI->connect("DBI:mysql:database=test;host=localhost ",
"username", "password",
{'RaiseError' => 1});

# definimos que el driver que vamos a utilizar es mysql que lo levante si no lo tiene, sino te tira error #(No recuerdo los internal pero mepa que usa autoload para poder levantarla).


# preparamos la sentencia a utilizar, Perl soporta placeholders.

my $sth = $dbh->prepare("SELECT nombre,apellido,edad FROM mitabla");

# ejecutamos la sentencia

$sth->execute();

# extraemos los datos fetchrow_hashref(), para mi, está es una de las más útiles pero siempre
# depende el contexto, debes saber utilizar referencias, son parecidas a C.
# en este caso significa "devolver las filas por medio de referencias con forma de array asociativo"
# cada vuelta de while es una fila distinta

while (my $ref = $sth->fetchrow_hashref()) {
print "$ref->{'apellido'}, $ref->{'nombre'} tiene $ref->{'edad'}\n";
}
$sth->finish();

# Desconectar de la base de datos, no es necesario a menos que este
# utilizando a Perl como modulo de apache.
$dbh->disconnect();
pero es que me dejaron realizar una aplicacion que funcione cgi peor no se como realizarla podria ayudarme, no se si se hace el programa en perl y se pone en la carpeta cgi y ya o como?

no se si debo utilizar estas variables de CGI

Variables de entorno que se intercambian de cliente a CGI:

1. QUERY_STRING: Es la cadena de entrada del CGI cuando se utiliza el método GET sustituyendo algunos símbolos especiales por otros. Cada elemento se envía como una pareja Variable=Valor. Si se utiliza el método POST esta variable de entorno está vacía.
2. CONTENT_TYPE: Tipo MIME de los datos enviados al CGI mediante POST. Con GET está vacía. Un valor típico para esta variable es: Application/X-www-form-urlencoded.
3. CONTENT_LENGTH: Longitud en bytes de los datos enviados al CGI utilizando el método POST. Con GET está vacía.
4. PATH_INFO: Información adicional del "path" tal y como llega al servidor en el URL.
5. REQUEST_METHOD: Nombre del método (GET o POST) utilizado para invocar al CGI.
6. SCRIPT_NAME: Nombre del CGI invocado.
7. SERVER_PORT: Puerto por el que el servidor recibe la conexión.
8. SERVER_PROTOCOL: Nombre y versión del protocolo en uso. (Ejem.: HTTP/1.0 o 1.1
Variables de entorno que se intercambian de servidor a CGI:

1. SERVER_SOFTWARE: Nombre y versión del software servidor de www.
2. SERVER_NAME: Nombre del servidor.
3. GATEWAY_INTERFACE: Nombre y versión de la interfície de comunicación entre servidor y aplicaciones CGI/1.1

monoswim 27/03/2008 06:07

Re: aplicacion CGI
 
Hola, antes que nada olvidate de los .exe, simplemente abris un archivo de texto que se llame holamundo.cgi o holamundo.pl y le colocás esto

Código:

#!c:/perl/bin/perl.exe

use CGI 'standard';
my $cgi = new CGI;
my %in = $cgi->Vars;

print "Content-type: text/html \n\n";
print "Hola: $in{'nombre'}";
exit;

Y lo guardas en tu carpeta CGI-BIN de tu servidor y lo llamas desde tu navegador como

http://localhost/cgi-bin/holamundo.cgi?nombre=Esteban

Te aparecerá "Hola Esteban"

Se entiende ? en perl tienes un montón de módulos que hacen el trabajo sucio por vos, así es más que fácil programar, te recomiendo la sección de tutoriales de www.perlenespanol.com

Saludos

Alphabravo 27/03/2008 12:41

Re: aplicacion CGI
 
hola oye y por ejemplo si deseo crear un cgi que tenga codigo sql por ejemplo que los parametros que reciva usuario y contraseña este los busque en la base de datos y si esta imprima algo y si no esta diga que no tiene acceso

monoswim 27/03/2008 15:26

Re: aplicacion CGI
 
my $sth = $dbh->prepare("SELECT nombre,apellido,edad FROM mitabla WHERE nic = ?");
$sth->execute($in{'nic'});

En serio, leete algunos tutoriales, te servirán mucho...

Saludos

forosdelwebdr 29/03/2008 04:18

Re: aplicacion CGI
 
Que turro q sos Esteban, tantos años en Perl y todavía con errores maestro!!!!, jajajajja, a ver:

Cita:

Iniciado por monoswim (Mensaje 2337240)
Acá vemos más que nada el lenguaje PERL

Que será ese lenguage uno nuevo? hay un lenguaje que se llama Perl y cuando nos referimos a su interprete se dice perl, otro no hay :-).

Cita:

Iniciado por monoswim (Mensaje 2337240)
#!c:/perl/bin/perl.exe

Te aporto un consejo, en Windows, si lo tenes a perl en el path, el sheband solo debe indicarlo.

#!perl

Así de cortito, fué un poco de offtopic pero a un maestro como usted era necesario pasar a saludarlo amigo...

Viva mdq!! y algún día voy a conocer esos pagos!!!

Saludos.

forosdelwebdr 29/03/2008 04:31

Re: aplicacion CGI
 
Agrego un posdata, al maestro de la pregunta, si estás trabajando en C o C# y queres mantenerte (vás a tener problema con la portabilidad), lo que debes indicar es una salida simplemente y ya tenes un CGI en C, practiquemos:

Código:

#include <stdio.h>

int main(int argc, char *argv[]) {
    printf("Content-Type: text/html\n\n");
    printf("<h1>%s</h1>", "hola Carola");
    return 0;
}

Un ejemplo más funcional:

Código:

#include <sys/time.h>
#include <stdio.h>
#include <stdlib.h>

#define MICRO_IN_SEC 1000000.00

double microtime(void);

int main(int argc, char *argv[]) {
    char string[12] = "Hola carola\0";
    time_t start, end;
    start=microtime();
    printf("Content-Type: text/html\n\n");
    printf("<h1>%s</h1>", "hola Carola");
    FILE *fp;
    fp=fopen("./sitio.c","r");
    char content[500];
    if (fp != NULL){
    char tmp;
        while (!feof(fp)){
              tmp=fgetc(fp);
              strcat(content, &tmp);
        }
        fclose(fp);
    } else {
      strcat(content, "<span style=\"color:red\">Error no puedo abrir el archivo</span>");
    }
    free(fp);
    printf("Este es el c&oacute;digo fuente de este sitio: <pre>%s</pre>", content);
    end=microtime();
    printf("Esta p&aacute;gina tardo en ejecutarse %f, %s", difftime(end, start), string);
    return 0;
}
double microtime(void) {
        return((double)(clock() / CLOCKS_PER_SEC));
}

Todavía no va a funcionar al menos en Apache cuando cuando lo compiles renombralo a cgi y listo, despúes buscas cuando sepas más como agregar tipos mimes.

Saludos

velezbunzl 07/02/2010 10:16

Respuesta: aplicacion CGI
 
Buenas tardes, como hago para que una aplicación en delphi se comunique con el cgi creado en perl???

si alguien sabe, estaría muy agradecido

monoswim 09/02/2010 08:18

Respuesta: aplicacion CGI
 
porque no preguntas en el foro de delphi ? en general hay alguna función tipo system() que te permite ejecutar otros programas dentro de tu script...

Saludos


La zona horaria es GMT -6. Ahora son las 17:22.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.