目的:
写一个登录窗口,输入帐号和密码,正确时返回成功.不正确时返回失败.
下面看下 html代码:
< html >
< head >
< TITLE > CGI3:登录 </ TITLE >
</ head >
</ body >
< FORM ACTION ="/cgi-bin/demo3.cgi" METHOD ="POST" >
< P > 用户名: < INPUT NAME ="name" >< BR >
< P > 用户名: < INPUT TYPE ="password" NAME ="password" >< BR >
< INPUT TYPE ="SUBMIT" VALUE ="确定" >
</ FORM >
</ body >
</ html >
注意:
1.<P>用户名:<INPUT TYPE="password" NAME="password"><BR>
这句表示文字域是用来输入密码的.在其中输入的内容用以点表示.
2.表单的方式是POST.
效果如图:
下面看下.CGI部分代码:
#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 " ); // CGI标准头
printf( " <html>\n<TITLE>CGI3:登录结果</TITLE><br>\n " );
str_len = getenv( " CONTENT_LENGTH " ); // 获取输入字符长度
// 如果str_len没有赋值成功,如果str_len有多过数值,如果len大于80则打印出错
if ( (str_len == NULL) || (sscanf(str_len, " %d " , & len) != 1 ) || (len > 80 ) )
printf( " sorry!error! " );
fgets(buf, len + 1 , stdin); // 从标准输入中读取len个字符
sscanf(buf, " name=%[^&]&password=%s " , user,passwd); // 格式化输入获得登陆名和密码
if ( (strncmp(user, " wenhao " , 6 ) == 0 ) && (strncmp(passwd, " 111111 " , 6 ) == 0 ) )
printf( " <body><h1>Welcome! 登录成功!</h1></body></html> " );
else
printf( " <body><h1>Sorry! 用户名或密码错误!</h1></body></html> " );
return 0 ;
}