Форум С++

 

Ответить на сообщение

Вернуться к теме

Вы отвечаете на сообщение:

Автор: exp   (26.11.2008 в 23:13)
У меня почему-то не получилось как в perl
в perl POST-данные читаются из stdin как-то похоже на это
my $length =  (defined $ENV{'CONTENT_LENGTH'} ) ? $ENV{'CONTENT_LENGTH'}: 0;
sysread STDIN, $text, $length = ($length > 4096) ? 4096 : $length;


Попробовал получить строку из stdin
возвращало пустую строку и определяло размер как 1

такой простой код
#include <stdio.h>

mainint argc,        /* Числo стрoк в массиве argv               */
           char *argv[],    /* Массив стрoк параметрoв кoманднoй стрoки */
           char **envp )    /* Массив стрoк переменных oкружения        */
{
printf("Content-type:text/html; charset=cp1251\n\n<pre>\n");


int count;
char string[255];

    /* command-line argumentS */
    printf"\nCommand-line arguments:\n" );
    for( count = 0; count < argc; count++ )
        printf"  argv[%d]   %s\n", count, argv[count] );

    /* environment variable. */
    printf"\nEnvironment variables:\n" );
    while( *envp != NULL )
        printf"  %s\n", *(envp++) );
        
if (!getenv("REQUEST_METHOD")) goto NOHTTP;

char *rem = getenv("REQUEST_METHOD");
printf("\n\n%s\n", rem);

if (strcmp(rem, "POST") == 0) {
   printf("\n<h1>post</h1>\n");
int *port = getenv("REMOTE_PORT");

   printf("\n\n%s\n\n", port);
}


if (!getenv("QUERY_STRING")) printf("программа вызвана не http-сервером\n");
printf("<form method=\"post\">\n<input name=\"x\" type=\"text\">\n");
printf("<input type=\"submit\" value=\"send\">\n</form><pre>\n");
int col= getenv("CONTENT_LENGTH");

printf("CONTENT_LENGTH = %i;\n", col);

NOHTTP: getch();
return 0;
}

почему-то пишет CONTENT_LENGTH = 4009311; внизу,
и CONTENT_LENGTH = 0; выше
если отправить пару букв и REQUEST_METHOD будет POST
(запускал на denwer под win)


Ваше имя:

Пароль:

Цитировать

Используйте тэги для выделения текста:
Код: [code][/code]
Жирный: [b][/b]
Наклонный: [i][/i]
URL: [url][/url]

Сообщение:

Прикрепить: