Foros del Web » Administración de Sistemas » Software para Servers »

[SOLUCIONADO] Cómo decodificar una URL con script CGI??

Estas en el tema de Cómo decodificar una URL con script CGI?? en el foro de Software para Servers en Foros del Web. Hola, tengo un servidor web Apache 2.x que tiene un formulario de login. El login llama a un script CGI hecho en C++, pero le ...
  #1 (permalink)  
Antiguo 27/02/2014, 08:47
 
Fecha de Ingreso: diciembre-2013
Mensajes: 150
Antigüedad: 10 años, 10 meses
Puntos: 8
Cómo decodificar una URL con script CGI??

Hola, tengo un servidor web Apache 2.x que tiene un formulario de login. El login llama a un script CGI hecho en C++, pero le envía una URL como está:

Código HTML:
Ver original
  1. nick=s+r+r%20

¿Alguien sabe como o donde pueda encontrar una forma de eliminar esos + y % para que quede decodificada? Es lo único que me falta para terminar mi CGI hecho en C++.

Gracias de antemano
__________________
¿Necesitas ayuda con algún algoritmo? Si tienes dudas, entonces visita: http://algoritmosypseudocodigo.blogspot.com/.

Última edición por jhonny6721; 27/02/2014 a las 08:48 Razón: Pequeño error al tipear
  #2 (permalink)  
Antiguo 28/02/2014, 05:09
Avatar de enlinea777  
Fecha de Ingreso: mayo-2008
Ubicación: frente al pc
Mensajes: 1.830
Antigüedad: 16 años, 5 meses
Puntos: 127
Respuesta: Cómo decodificar una URL con script CGI??

en google hay mucha informacion

https://www.google.cl/search?q=c%2B%...HoBQ&gws_rd=cr


Para muestra un boton:
Código C++:
Ver original
  1. #include <assert.h>
  2.  
  3. void urldecode(char *pszDecodedOut, size_t nBufferSize, const char *pszEncodedIn)
  4. {
  5.     memset(pszDecodedOut, 0, nBufferSize);
  6.  
  7.     enum DecodeState_e
  8.     {
  9.         STATE_SEARCH = 0, ///< searching for an ampersand to convert
  10.         STATE_CONVERTING, ///< convert the two proceeding characters from hex
  11.     };
  12.  
  13.     DecodeState_e state = STATE_SEARCH;
  14.  
  15.     for(unsigned int i = 0; i < strlen(pszEncodedIn)-1; ++i)
  16.     {
  17.         switch(state)
  18.         {
  19.         case STATE_SEARCH:
  20.             {
  21.                 if(pszEncodedIn[i] != '%')
  22.                 {
  23.                     strncat(pszDecodedOut, &pszEncodedIn[i], 1);
  24.                     assert(strlen(pszDecodedOut) < nBufferSize);
  25.                     break;
  26.                 }
  27.  
  28.                 // We are now converting
  29.                 state = STATE_CONVERTING;
  30.             }
  31.             break;
  32.  
  33.         case STATE_CONVERTING:
  34.             {
  35.                 // Conversion complete (i.e. don't convert again next iter)
  36.                 state = STATE_SEARCH;
  37.  
  38.                 // Create a buffer to hold the hex. For example, if %20, this
  39.                 // buffer would hold 20 (in ASCII)
  40.                 char pszTempNumBuf[3] = {0};
  41.                 strncpy(pszTempNumBuf, &pszEncodedIn[i], 2);
  42.  
  43.                 // Ensure both characters are hexadecimal
  44.                 bool bBothDigits = true;
  45.  
  46.                 for(int j = 0; j < 2; ++j)
  47.                 {
  48.                     if(!isxdigit(pszTempNumBuf[j]))
  49.                         bBothDigits = false;
  50.                 }
  51.  
  52.                 if(!bBothDigits)
  53.                     break;
  54.  
  55.                 // Convert two hexadecimal characters into one character
  56.                 int nAsciiCharacter;
  57.                 sscanf(pszTempNumBuf, "%x", &nAsciiCharacter);
  58.  
  59.                 // Ensure we aren't going to overflow
  60.                 assert(strlen(pszDecodedOut) < nBufferSize);
  61.  
  62.                 // Concatenate this character onto the output
  63.                 strncat(pszDecodedOut, (char*)&nAsciiCharacter, 1);
  64.  
  65.                 // Skip the next character
  66.                 i++;
  67.             }
  68.             break;
  69.         }
  70.     }
  71. }
  #3 (permalink)  
Antiguo 28/02/2014, 09:06
 
Fecha de Ingreso: diciembre-2013
Mensajes: 150
Antigüedad: 10 años, 10 meses
Puntos: 8
Respuesta: Cómo decodificar una URL con script CGI??

Bueno, yo había buscado en google y lo único que me apareció en mis busquedas fue:
  • Decodificador de URL Online (No me servia porque tengo que hacerlo por mismo)
  • Decodificar URL en javascript (No me sirve ese lenguaje porque usa cosas no disponibles en C++)
  • Funciones ya incluidas en los lenguajes como php (No me servia)

Puedes decir busca en google, pero hay muchas explicaciones que son confusas y es por esa razón que pregunto en este foro.

Probaré el algoritmo, y gracias de todas manera por darmelo. No pienses que soy vago, es que hay cosas que son confusas en otras paginas web, como ya lo dije antes.
__________________
¿Necesitas ayuda con algún algoritmo? Si tienes dudas, entonces visita: http://algoritmosypseudocodigo.blogspot.com/.
  #4 (permalink)  
Antiguo 28/02/2014, 11:59
Avatar de enlinea777  
Fecha de Ingreso: mayo-2008
Ubicación: frente al pc
Mensajes: 1.830
Antigüedad: 16 años, 5 meses
Puntos: 127
Respuesta: Cómo decodificar una URL con script CGI??

tienes que saber buscar en google..
lo que necesutabas buscr era "c++ urldecoder" pues necesitas decodificar una url en lenguaje c++.
  #5 (permalink)  
Antiguo 28/02/2014, 20:51
 
Fecha de Ingreso: diciembre-2013
Mensajes: 150
Antigüedad: 10 años, 10 meses
Puntos: 8
Respuesta: Cómo decodificar una URL con script CGI??

Como ya pude solucionar el problema, marcaré el tema como solucionado.
__________________
¿Necesitas ayuda con algún algoritmo? Si tienes dudas, entonces visita: http://algoritmosypseudocodigo.blogspot.com/.

Etiquetas: apache, decodificar, ip, servidor, servidores-web, url
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




La zona horaria es GMT -6. Ahora son las 15:01.