2016-10-27 5 views
0

Я начал экспериментировать с C/CGI/HTML несколько дней назад. Я был возбужден некоторой страница регистрации программы, которую я видел, так что я пытался сделать мой собственный:C/HTML: правильная печать имени пользователя и пароля пользователя

Вот моя программа:

#include <stdio.h> 
#include <stdlib.h> 
#include <string.h> 

int main(void) 
{ 
    char *data; 
    char *user; 
    char *password; 
    printf("Content-type:text/html\r\n\r\n"); 
    printf("<!DOCTYPE html><html><head><title>Hello</title></head><body>"); 
    data = getenv("QUERY_STRING"); 
    if (data) { 
    sscanf(data,"user=%s&password=%s", user, password); 
    printf("Hello Mr./Ms. %s\n",user); 
    printf("You entered your password %s\n",password); 
    } 
    printf("<form action='http://localhost/10.html'>"); 
    printf("<input type=text name=user>"); 
    printf("<input type=password name =password>"); 
    printf("</body></html>"); 
    exit(EXIT_SUCCESS); 
} 

И всякий раз, когда я исполняю свой HTML-файл:

с вход:

имя пользователя = 123 пароль = 123

Это выход, что эта программа дает мне:

Hello Mr./Ms. 123&password=123 You entered your password (null) 

Любая идея, как это исправить? Благодаря!

+0

Какой вход? Единственный вход в эту программу исходит из переменной окружения 'QUERY_STRING', и вы не указали, что содержит эта переменная среды. –

ответ

0

В вашей части кода

char *user; 
char *password; 

user и password только неинициализированные указатели.

Вам нужно это:

char user[100]; 
char password[100]; 

Но, скорее всего, другие CGI и проблемы, связанные с sscanf.

Смежные вопросы