Quisiera saber si alguien me puede ayudar ya que en mi trabajo me pidieron en la pagina que tienen haya un formulario para inscribirse en una competencia, y empece a buscar informacion y vi que para poder procesar el formulario, hay que hacer un programa CGI, y de los lenguajes posibles, el mas parecido al que yo se, que es pascal, es el C. Asi que me estuve bajando de internet manuales, tutoriales, etc. y mas o menos lo pude entender. Asi que despues empece a buscar como hacer un cgi y estoy tratando de hacerlo pero me cuesta un poco, ya que todavia hay bastantes cosas de C que no conozco ya que hace menos de una semana que lo vi por primera vez, y este trabajo que me piden es para dentro de no mas de 10 dias. Ellos lo que quieren es que una vez que la persona complete el formulario, aparezca un nro de inscripcion (del 1 al 1000) y que los datos queden guardados en algun lugar para despues revisarlos.
Yo estoy tratando de hacer la parte de cuando el programa recibe todos los datos juntos (metodo post) y hay que separarlos de acuerdo al campo (nombre, email, etc). El problema es que cuando lo compilo me dice que tiene bastantes errores y no se cuales son o si hay cosas que tengo que agregarle.
Yo lo que hice aca es para que nada mas busque los datos ingresados en nombre, lo otro despues se lo agregaria y despues tendria que ver como hago para guardarlos en un archivo.
Bueno, si alguien me ayuda le agradeceria mucho.
Esto es lo que hice hasta ahora:
#include <iostream.h>
#include <stdlib.h>
#include <stdio.h>
void Recibe_parametros(char **param);
void Identifica_variable(char *vble, char **param, int *p);
void Transforma_ASCCI(char **param, int *n, char *vble, int *i);
int main()
{
char *cadena, nombre[40];
int p=0;
Recibe_parametros(&cadena);
Identifica_variable(nombre, &cadena, p);
system("PAUSE");
return 0;
}
void Recibe_parametros(char **param);
/* Guarda en "cadena" toda la informacion del formulario
(enviado con el metodo POST) */
{
int longitud;
longitud = atoi(getenv("content_length"));
*param = (char*)malloc((longitud+1)*sizeof(char));
gets(*param);
}
void Identifica_variable(char *vble, char **param, int *n);
/* Recibe un puntero a la variable donde se guardarán los datos del campo, la
cadena donde buscará esos datos y la posicion actual del puntero de la cadena */
{
int i=0;
while(*param != '=')&&(*param != '\0');
{
*param++;
n++;
}
if(*param == '='){
*param++;
n++;
while(*param == '+');
{
*param++;
n++;
}
while(*param != '&')&&(*param != '\0');
{
if(*param == '%');
Transforma_ASCCI(¶m, n, vble, i);
else
if(*param == '+');
*param=' ';
vble[i]=*param;
i++;
*param++;
n++;
}
}
else
vble[i]=' ';
}
void Transforma_ASCCI(char **param, int *n, char *vble, int *i);
/* Transforma los caracteres especiales a ascci. El caracter transformado es
guardado en vble[i] */
{
if(
((*param[n+1] >= '0' && *param[n+1] <= '9')||
(*param[n+1] >= 'A' && *param[n+1] <= 'F')
)
&&
((*param[n+2] >= '0' && *param[n+2] <= '9')||
(*param[n+2] >= 'A' && *param[n+2] <= 'F'))
)
{
if(*param[n+1] >= 'A')
vble[i]=((*param[n+1]-'A')+10)*16;
else
vble[i]=(*param[n+1]-'0')*16;
if(*param[n+2] >= 'A')
vble[i]+=(*param[n+2]-'A')+10;
else
vble[i]+=(*param[n+2]-'0');
*param=*param+3;
n=n+3;
i++;
}