智能家居网络系统设计(三)

最后更新于:2022-04-01 16:26:59

我还是按照这个程序的顺序来讲解,方便大家理解 一点,在这里得说明下boa服务器只是一个平台,只要搭建好了就可以不用去管它,我们只需要写cgi-bin和html文件,我们在上一篇文章中网页已经做好了,当我们点击提交按钮的时候,程序会去执行/etc/boa/cgi-bin目录下的login.cgi脚本文件,(为什么是这个文件,我们在上篇文章已经制定了这个脚本来处理数据),下面我们就来写这个脚本程序。 login.c文件: ~~~ #include <stdio.h> #include <stdlib.h> int main(void) { char *str_len=NULL; int len=0; char buf[100]=""; char user[20]=""; char passwd[20]=""; ~~~ printf("%s\r\n\r\n","Content-Type:text/html");   / * 固定格式,不用去管他,但是注意这条语句前后要空两行 * / printf("<html>\n<head>\n<title>CGI3:登录结果</title></head><br>\n"); / *  可以用printf打印网页,但是要按照 html格式打印,也可以网页保存在一个数组中来打印,后面文章中将会讲解,这里是打印新网页的标题 * / str_len = getenv("CONTENT_LENGTH");/ *  这个很重要获取环境变量,是获取我们开始登陆信息  * / if( (str_len==NULL)  || (sscanf(str_len, "%d", &len)!=1) || (len>80) )  / * 这里注意下sscanf的用法 * / printf("sorry!error!"); fgets(buf, len+1, stdin); sscanf(buf, "name=%[^&]&password=%s", user,passwd);   / * 把用户名保存在user中,把账户保存在passwd,观察这里的name,password。这里不是和网页里面设置的变量对应起来了么,这里只是提取出来吧了 * / if( (strncmp(user,"root",4)==0) && (strncmp(passwd, "111111", 6)==0) )/* 比较登陆用户是否正确  * / { printf("<script language=\"JavaScript\">self.location='main.cgi';</script>");/ *  调用一个新的main.cgi脚本  * / } else printf("Sorry! 用户名或密码错误!"); return 0; } 编译: #  arm-linux-gcc login.c -o login.cgi  (后面我会统一写进一个Makefile中) 在这一章可以这样测试,你在if( (strncmp(user,"root",4)==0) && (strncmp(passwd, "111111", 6)==0) )下面添加打印语句密码正确,和密码错误测试。注释掉打印脚本的那条语句,因为你都还没有写这个脚本,你怎么跳转呢。一定要把脚本文件复制到/etc/boa/cgi-bin目录下面,这是我们之前搭建boa服务器时候规定的文件加。
';