LINUX.ORG.RU

Проблема с POST


0

0

Что-то бывает у меня на разных системах проблема с чтением данных из stdin при методе POST.
Что не так делаю? Может проблема с stdin? Хотя на ряде серверов такой подход работает без проблем - а иногда - проблемы...

...
char *param; //сюда помещаю query string

for (i=0; env[i]!=NULL; i++)
{
if (strstr(env[i], "REQUEST_METHOD")!=NULL)
{
if (strstr(env[i], "POST")) //если метод POST
{
for (j=0; env[j]!=NULL; i++)
if (strstr(env[j], "CONTENT_LENGTH")) // ищем длину строки
if (strcpy(param, env[j])!=NULL) break;

if (strlen(param)>15)
{
if ((Ptr=strtok(param, "="))!=NULL)
if ((Ptr=strtok(NULL, "="))!=NULL) // помещаем временно в param длину строки
{
strcpy(param, Ptr);
fgets(param, atoi(param)+1, stdin); //читаем из stdin строку
}
}
else strcpy(param, "\0");
break;
}
}
}


1) if (strlen(param)>15) не надо на это завязываться
лучше if ( len > 0 ) или другое, а то добавление лишнего пробела и ты
в обломе
2) Лучше не использовать strtok
вместо него, что-то вроде этого len = atoi(strchr(param, '=')+1)
3) Опиши конкретную ошибку.

fire
()

Дело не в этом... Все замечания принимаются.
Но главное то, что при передаче параметров методом POST скрипт, которому они предназначены просто зависает (или что там еще, я не знаю, на сервере не видно). Просто нет ответа от сервера. Я так и понял, что проблема именно с чтением параметров из stdin.
C методом GET - все ОК. А у меня в локале и с меодом POST - все ОК.

Dbor
() автор топика

Может на сервере закрыт как-то stdin?

Dbor
() автор топика

Все решил, всем спасибо... :)))

Dbor
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.