Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> cgi раскодировка данных через get 
:(
    Опции темы
Гость_Сергей
Дата 7.3.2005, 00:33 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Привет
Парамтры посланые через get перекодируются
пробовал пользоваться библиотекой libcgi-1.0

она страницу раскодирует вроде бы но сылки получаются битые и не работают

кто знает как нормально раскодировать нормально параметры

вот та функция из библиотеки

Код


#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
// #include <iostream.h>


static int hextable[256];

void init_hex_table()
{
       memset(hextable, 0, 255);

       hextable['1'] = 1;
       hextable['2'] = 2;
       hextable['3'] = 3;
       hextable['4'] = 4;
       hextable['5'] = 5;
       hextable['6'] = 6;
       hextable['7'] = 7;
       hextable['8'] = 8;
       hextable['9'] = 9;
       hextable['a'] = 10;
       hextable['b'] = 11;
       hextable['c'] = 12;
       hextable['d'] = 13;
       hextable['e'] = 13;
       hextable['f'] = 15;
       hextable['A'] = 10;
       hextable['B'] = 11;
       hextable['C'] = 12;
       hextable['D'] = 13;
       hextable['E'] = 14;
       hextable['F'] = 15;
}






int main(int argc, char* argv[])
{


       printf ("Content-type: text/html\n\n");
      printf("Hello World!\n");
printf ("\n");

char *str;


 

init_hex_table();

//str="http%3A//yandex.ru/yandpage%3Fq%3D280530048%26p%3D1%26ag%3Dd%26qs%3Dtext%253D%2525D2%2525C1%2525C2%2525CF%2525D4%2525C1%252B%2525D0%2525D2%2525C5%2525C4%2525CC%2525CF%2525D6%2525C5%2525CE%2525C9%2525C5%2526stype%253Dwww%20"

//str="http%3A//www.yandex.ru/yandpage%3Fq%3D212087360%26p%3D3%26ag%3Dd%26qs%3Dtext%253D%2525CC%2525C5%2525CB%2525C1%2525D2%2525D3%2525D4%2525D7%2525CF%252B%2525EB3-%2525EB%2525CF%2525D4%2525D4%2525C5%2525C4%2525D6%2526stype%253Dwww%20";
//str="http%3A//yandex.ru/yandpage%3Fq%3D280530048%26p%3D1%26ag%3Dd%26qs%3Dtext%253D%2525D2%2525C1%2525C2%2525CF%2525D4%2525C1%252B%2525D0%2525D2%2525C5%2525C4%2525CC%2525CF%2525D6%2525C5%2525CE%2525C9%2525C5%2526stype%253Dwww%20";
//str="http%3A//www.yandex.ru/yandpage%3Fq%3D1528464448%26p%3D1%26ag%3Dd%26qs%3Dstype%253D%2526nl%253D0%2526text%253D%2525E4%2525CF%2525D3%2525CB%2525C1%252B%2525CF%2525C2%2525DF%2525D1%2525D7%2525CC%2525C5%2525CE%2525C9%2525CA%25252B%2525D2%2525C1%2525C2%2525CF%2525D4%2525C1%20";
str="http%3A//www.yandex.ru/yandpage%3Fq%3D212087360%26p%3D3%26ag%3Dd%26qs%3Dtext%253D%2525CC%2525C5%2525CB%2525C1%2525D2%2525D3%2525D4%2525D7%2525CF%252B%2525EB3-%2525EB%2525CF%2525D4%2525D4%2525C5%2525C4%2525D6%2526stype%253Dwww%20";

       unsigned int i, len, pos = 0;

       len = strlen(str);
//        char *tmp = new char;  
       char *tmp;  

       tmp = (char *)malloc(len + 1);
       if (tmp == NULL) printf("erre");

       for (i = 0; i < len; i++) {
               if (str[i] == '%') {
                 while (((str[i] == '%') || (tmp[pos] == '%')) && isxdigit(str[i+1]) && isxdigit(str[i+2]) ) {
                       tmp[pos] = (hextable[str[i+1]] << 4) + hextable[str[i+2]];
                       i += 2;
                 }
               } else if (str[i] == '+')
                       tmp[pos] = ' ';
               else
                       tmp[pos] = str[i];
               pos++;
       }
       tmp[pos] = '\0';
printf("\n%s\n",tmp);


free (tmp);


 return 0;
}



  Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0389 ]   [ Использовано запросов: 20 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.