Apache+cgi怎么实现用户登录(CGI用C语言编写)
前台页面:
<html>
<head>
<title>RFID_Middleware</title>
</head>
<body style="background-image:url(cgi_2.jpg);background-repeat:no-
repeat;background-accachment:scroll;">
<center><H1>RFID中间件登录系统</H1></center>
<br>
<br>
<br>
<table border=1 align=center cellspacing=3 cellpadding=10>
<tr>
<td>
<from method=post name="form1" action=E:\CGI\cgi-bin\Hello.cgi>
<center>
用户名:<input type="text" name="username" ><br><br>
密  码:<input type="text" name="password" ><br><br>
<input type="submit" value="登录" style="width:99px">
</center>
</from>
</td>
</tr>
</table>
</body>
</html>
后台CGI处理程序:
// Login.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// Login.cpp : 定义控制台应用程序的入口点。
//
int _tmain(int argc, _TCHAR* argv[])
{
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,"11",2)==0) && (strncmp(passwd, "111111", 6)==0) )
printf("<body><h1>Welcome! 登录成功!</h1></body></html>");
else
printf("<body><h1>Sorry! 用户名或密码错误!</h1></body></html>\n");
return 0;
}
点击登录按钮提交表单后,没有反应。
是不是要在Apcahe里输入什么内容呀
[解决办法]
你的action地址不对吧?
<from method=post name="form1" action=E:\CGI\cgi-bin\Hello.cgi>
这里错了。
你先检查请求有没有传达到apache服务器那边。cgi是否已经运行了。 然后再检查其他问题。