C / HTML - 从HTML表单

时间:2016-10-25 14:28:01

标签: html c cgi

我们被要求使用HTML,C / CGI和CSS创建登录页面。我想先从基础知识,HTML和C / CGI开始,所以我创建了这个:

#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>Welcome!</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/inch.html'>");
printf("<input type=submit value='Compute'>");
printf("</body></html>");
exit(EXIT_SUCCESS);
}

然而,编译器正在向我展示这个问题:

  

警告:格式'%s'需要类型为'char *'的参数,但参数为3   有'char **'类型[-Wformat =]        sscanf(data,&#34; user =%s&amp; password =%s&#34;,&amp; user,&amp; password);

此外,HTML显示错误500。

有关如何解决此问题的任何想法?我在这个HTML / CGI的事情上相当新,我会很感激帮助。谢谢!

1 个答案:

答案 0 :(得分:0)

问题是,sscanf需要一个指向char的指针:

int sscanf ( const char * s, const char * format, ...);

试试这个:

char user[100];
char password[100];
// ...
sscanf(data,"user=%s&password=%s", user, password);