📄 1.cpp
字号:
#include <stdio.h>
#include <stdlib.h>
#include <memory.h>
#include <string.h>
#include <ctype.h>
//#include <unistd.h>
//#include <fcntl.h>
//#include <termios.h>
//#include <errno.h>
//#include <sys/types.h>
//#include <pthread.h>
char buff[3]={0,0,0};
int htoi(char *);
int ShowMainHtml();
int ShowWorngHtml();
int UrlDecode(char *loginname,char *loginpassword);
int UserCheck(char *loginname,char *loginpassword);
void nread(void);
int main()
{
char loginname[15];
char loginpassword[15];
int logincheck = 0;
printf("Content-Type:text/html\n\n");
memset(loginname, 0, 15);
memset(loginpassword, 0, 15);
UrlDecode(loginname, loginpassword);
//printf("loginname = %s\n", loginname);
//printf("loginpassword = %s\n", loginpassword);
logincheck = UserCheck(loginname,loginpassword);
// printf("he!");
if (logincheck == 1)
{
ShowMainHtml();
}
else if(logincheck == 0)
{
ShowWorngHtml();
}
return 0;
}
int UrlDecode(char *loginname,char *loginpassword)
{
//int n;
int i;
int m = 0; //位数
int j = 0; //name与password标志
int k = 0; //是否需保存内容的标志
char c;
int strsize = 0;
if(getenv("CONTENT_LENGTH"))
strsize = atoi(getenv("CONTENT_LENGTH"));
for(i = 0;i < strsize;i ++)
{
int is_eq = 0;
c = getchar();
switch(c)
{
case '&':
{
j++;
k = 0;
m = 0;
c = '\n';
}break;
case '+': c = ' '; break;
case '%':
{
char s[3];
s[0] = getchar();
s[1] = getchar();
s[2] = 0;
c = htoi(s);
i += 2;
} break;
case '=':
is_eq = 1;
k = 1;
break;
};
if(j == 0 && k == 2)
{
*loginname++ = c;
}
else if(j == 1 && k == 2)
{
*loginpassword++ = c;
}
if(k == 1)
{
k++;
}
}
fflush(stdout);
return 1;
}
int UserCheck(char *loginname,char *loginpassword)
{
int i = 0;
if(!strcmp(loginname,"adm"))
{
if(!strcmp(loginpassword,"123456"))
{
i=1;
}
else i=0;
}
else i=0;
return i;
/* sqlite3 *db = NULL;
char *zErrMsg = 0;
int rc;
char *sql_query;
int nrow = 0;
int ncolumn = 0; // 查询语句返回的结果集的行数,列数
char **azResult; //用于保存查询结果集数据
rc = sqlite3_open("test.db", &db);
if (rc)
{
fprintf(stderr,"Can't open database:%s\n",sqlite3_errmsg(db));
printf("<p>open failure!\n");
exit(1);
}
// sql_query = "select * fron tb1";
rc = sqlite3_get_table(db,"select * from tbl",&azResult,&nrow,&ncolumn,&zErrMsg);
// rc = sqlite3_get_table(db,sql_query,&azResult,&nrow,&ncolumn,&zErrMsg);
if( rc!=SQLITE_OK )
{
fprintf(stderr, "SQL error: %s\n", zErrMsg);
sqlite3_free(zErrMsg);
}
for(i = 1;i <= nrow; i ++) //行数
{
// printf("hello!");
if ((!strcmp(azResult[i*ncolumn], loginname)) && (!strcmp(azResult[i*ncolumn+1],loginpassword)))
{
sqlite3_free_table(azResult);
sqlite3_close(db);
return 1;
}
}
sqlite3_free_table(azResult);
sqlite3_close(db);
return 0;*/
}
int htoi(char *s)
{
char *digits = " 0123456789ABCDEF";
if(islower(s[0]))
s[0] = toupper(s[0]);
if(islower(s[1]))
s[1] = toupper(s[1]);
return 16 * (strchr(digits,s[0]) - strchr(digits,'0'))
+ (strchr(digits,s[1]) - strchr(digits,'0'));
}
int ShowMainHtml()
{
int m;
int i;
printf("<html>");
printf("<head>");
printf("<meta http-equiv=\"Content-Language\" content=\"zh-cn\">");
printf("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=gb2312\">");
//printf("<meta http-equiv=\"refresh\" content=\"20\">\n");
printf("<title>系统平台</title>");
printf("</head>");
printf("<body>");
//printf("<p align=\"center\"> </p>");
//printf("<p align=\"center\"> </p>");
//printf("<p align=\"center\"> </p>");
printf("<p align=\"center\"><font color=\"#FF660F\" size=\"6\" face=\"楷体_GB2312\"><b>");
printf("<h2 align=\"center\">嵌入式远程监控系统</h2></b></font></p>");
printf("<div align=\"center\">");
printf("<table border=\"1\" width=\"45%\" id=\"table1\" height=\"255\">");
printf("<tr><td height=\"46\" width=\"204\">");
printf("<p align=\"center\"><b>系统参数</b></td>");
printf("<td height=\"46\">");
printf("<p align=\"center\"><b>生产状态</b></td>");
printf("</tr>");
printf("<tr>");
printf("<td width=\"204\">");
printf("<p align=\"left\"><b><font color=\"#FF660F\">当前温度");
//nread();
/* if(buff[0] == 1)
printf("+");
else
printf("-");
printf("%d.%d\n",buff[1],buff[2]);*/
printf("</b></td>");
printf("<td>");
printf("<p align=\"center\">");
printf("<input type=\"text\" name=\"T1\" size=\"15\" style=\"font-size: 14pt\"></td>");
printf("</tr>");
printf("<tr>");
printf("<td width=\"204\" height=\"58\"><b><font color=\"#FF660F\">当前压强</b></td>");
printf("<td height=\"58\">");
printf("<p align=\"center\">");
//printf("<p align=\"left\"> ");
printf("<input type=\"text\" name=\"T2\" size=\"15\" style=\"font-size: 14pt\"></td>");
//printf("<input type=\"button\" value=\"+\" name=\"B1\" style=\"font-family: 宋体; font-size: 14pt; font-weight: bold\">");
//printf("<b><font face=\"谔?\"> ");
//printf("温度 </font></b>");
//printf("<input type=\"button\" value=\"-\" name=\"B2\" style=\"font-family: 宋体; font-size: 14pt; font-weight: bold\"></td>");
printf("</tr>");
printf("<tr>");
/* printf("<td width=\"204\" height=\"87\">");
printf("<p align=\"left\"><b>主电源</b></td>");
printf("<td height=\"87\"> ");
printf("<form method=\"POST\" action=\"--WEBBOT-SELF--\">");
printf("<!--webbot bot=\"SaveResults\" U-File=\"fpweb:///_private/form_results.csv\" S-Format=\"TEXT/CSV\" S-Label-Fields=\"TRUE\" -->");
printf("<p> ");
printf("<input type=\"button\" value=\"开机\" name=\"B3\" style=\"font-family: 宋体; font-size: 14pt; font-weight: bold\"> ");
printf("<input type=\"button\" value=\"关机\" name=\"B4\" style=\"font-family: 宋体; font-size: 14pt; font-weight: bold\"></p>");
printf("</form>");
printf("</td>");
printf("</tr>");
printf("</table>");
printf("</div>");*/
printf("<p align=\"left\"> </p>");
printf("</body>");
printf("</html>");
return 0;
}
int ShowWorngHtml()
{
printf("<html>");
printf("<head>");
printf("<meta http-equiv=\"Content-Type\" content=\"text/html;charset=gb2312\">\n\n");
printf("<title>登陆失败</title>");
printf("<tr>");
printf("<p>你输入的用户名和密码不正确!");
printf("<div align = \"left\"><a href = \"http://202.193.9.21/index.html\">返回登陆界面</a></div>");
printf("</body>");
printf("</html>");
return 0;
}
/*void nread(void)
{
int fd;
struct termios Opt;
int nread;
int i;
//printf("uart1 test!\n");
fd = open("/dev/tts/1",O_RDWR);
if (-1 == fd)
{
perror("wrong!");
exit(1);
}
Opt.c_cflag |= CS8;//8位数据位
Opt.c_cflag &= ~PARENB;//无效验位
//Opt.c_cflag &= ~OPOST; //原始数据输出
//Opt.c_cflag &= ~ICANON; //原始数据输入
cfsetispeed(&Opt,B4800);
cfsetospeed(&Opt,B4800);
Opt.c_cflag &= ~CSTOPB; //1位停止位
Opt.c_cflag &= ~CRTSCTS; //无硬件控制流
Opt.c_cc[VMIN] = 3;
tcsetattr(fd ,TCSANOW,&Opt);//设置新属性,TCSANOW:所有改变立即生效
//printf("set done!\n");
// printf("start recieve\n");
nread=read(fd,buff,3);
//printf("finish recieve\n");
//printf("nread=%d\n",nread);
// for(i = 0;i < 3;i++)
// {
// printf("buff[%d]=%x\n",i,buff[i]);
// }
//printf("Bye Bye!\n");
close(fd);
}
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -