Итак, как я уже говорил несколько дней назад, я пытаюсь создать сценарий входа в систему с использованием CGI-C на сервере Apache.
Моя форма передает две переменные в Test.cgi: имя пользователя ипароль (только от 2 до 40 символов), используя метод POST.
вот мой код:
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
char *lengthy;
int figures;
char somelimit[512];
lengthy = getenv("CONTENT_LENGTH");
figures = atoi(lengthy);
fgets(somelimit, figures, stdin);
printf("Content-type: text/html\n\n");
printf("%s\n", somelimit);
return 0;
}
Q.Как извлечь значения имени пользователя и пароля из стандартного ввода?Обычное возвращение, которое я получаю в приведенном выше случае: «username = xyz & password = xyz12», как мне это обработать?
Q Я хочу ограничить то, что я читаю из заголовка CONTENT_LENGTH, в случае некорректного CONTENT-Длина заголовка.
какой тип данных возвращает этот заголовок?Я знаю, что он должен возвращать «десятичное число октетов».Допустимые значения: 0 или более.Я хочу взять от 1 до X, где X - верхний предел, учитывая, что у меня есть две переменные, имя пользователя / пароль, каждая из которых ограничена 40 символами в HTML-форме.
Я использовал int [] и char [] вместо указателя.Почему я не могу преобразовать его напрямую с помощью чего-то вроде:
int some[1024];
some = atoi(gentenv("CONTENT_LENGTH"));
почему atoi считается небезопасным?
Q.Как взять только стандартный ввод, содержащий только символы US-ASCII, чтобы избежать искаженного тела сообщения.
Я новичок в C, поэтому, пожалуйста, будьте спокойны :) PS: Пожалуйста, не рекомендуйте никаких фреймворков / веб-серверов и т. Д.
Редактировать: Я только что понял, что, возможно, я задал слишком много вопросов.Извини за это.Я собираюсь исправить этот пост, чтобы сделать его сплоченным и хорошо ограниченным.Подождите, пожалуйста.
Edit2: Это последний вопрос, больше никаких правок.Я приму ответ, который по крайней мере отвечает на 2 из 3 вопросов выше.