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

我还是按照这个程序的顺序来讲解,方便大家理解 一点,在这里得说明下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 ","Content-Type:text/html");   /  固定格式,不用去管他,但是注意这条语句前后要空两行  /
printf("

CGI3:登录结果
"); /   可以用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("");/   调用一个新的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服务器时候规定的文件加。

文章导航