Foros del Web » Programación para mayores de 30 ;) » Programación General »

aplicacion CGI

Estas en el tema de aplicacion CGI en el foro de Programación General en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 26/03/2008, 10:05
 
Fecha de Ingreso: enero-2005
Mensajes: 386
Antigüedad: 19 años, 3 meses
Puntos: 3
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 :(
  #2 (permalink)  
Antiguo 26/03/2008, 11:23
Avatar de monoswim
$moderador{'Esteban'}
 
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires - Argentina
Mensajes: 8.762
Antigüedad: 22 años, 3 meses
Puntos: 90
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
__________________
Esteban Quintana
  #3 (permalink)  
Antiguo 26/03/2008, 22:39
 
Fecha de Ingreso: enero-2005
Mensajes: 386
Antigüedad: 19 años, 3 meses
Puntos: 3
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

Última edición por Alphabravo; 26/03/2008 a las 22:51
  #4 (permalink)  
Antiguo 27/03/2008, 06:07
Avatar de monoswim
$moderador{'Esteban'}
 
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires - Argentina
Mensajes: 8.762
Antigüedad: 22 años, 3 meses
Puntos: 90
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
__________________
Esteban Quintana
  #5 (permalink)  
Antiguo 27/03/2008, 12:41
 
Fecha de Ingreso: enero-2005
Mensajes: 386
Antigüedad: 19 años, 3 meses
Puntos: 3
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
  #6 (permalink)  
Antiguo 27/03/2008, 15:26
Avatar de monoswim
$moderador{'Esteban'}
 
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires - Argentina
Mensajes: 8.762
Antigüedad: 22 años, 3 meses
Puntos: 90
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
__________________
Esteban Quintana
  #7 (permalink)  
Antiguo 29/03/2008, 04:18
 
Fecha de Ingreso: enero-2008
Mensajes: 21
Antigüedad: 16 años, 3 meses
Puntos: 1
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 Ver Mensaje
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 Ver Mensaje
#!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.
  #8 (permalink)  
Antiguo 29/03/2008, 04:31
 
Fecha de Ingreso: enero-2008
Mensajes: 21
Antigüedad: 16 años, 3 meses
Puntos: 1
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
  #9 (permalink)  
Antiguo 07/02/2010, 10:16
 
Fecha de Ingreso: enero-2009
Mensajes: 2
Antigüedad: 15 años, 3 meses
Puntos: 0
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
  #10 (permalink)  
Antiguo 09/02/2010, 08:18
Avatar de monoswim
$moderador{'Esteban'}
 
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires - Argentina
Mensajes: 8.762
Antigüedad: 22 años, 3 meses
Puntos: 90
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
__________________
Esteban Quintana
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 02:39.