⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 login.c

📁 linux unix 入门代码上,是关于初级入门的,经典代码
💻 C
字号:
#include <stdio.h>/*#include "common.h"#include "misc.h"*/#define DEFAULTPASSWD "/tmp/passwd"#define KEYLEN 16#define VALLEN 64#define PWDLINELEN 1024#define POSTMAXLEN 1024typedef struct pair {	char key[KEYLEN];	char val[VALLEN];} Pair_t;typedef struct link_node {	struct link_node *next;	Pair_t data;} Node_t;void htmlerror(char*);void trunc_ret(char*);int addnode(Node_t *, Pair_t *);int dumpnode(Node_t*);char *getvalbykey(Node_t *, char *);intmain(){	char readbuf[POSTMAXLEN];	char *tok;	int ret;	Node_t inputs={NULL,{"",""}};	Pair_t temp;	FILE *fp;	char username[VALLEN],password[VALLEN];	int login=0;	char pwdline[PWDLINELEN];	printf("Content-type: text/plain\n\n");	ret=fread(readbuf,1,POSTMAXLEN,stdin);	if (ret==POSTMAXLEN) {		htmlerror("Input is too long.");	}	readbuf[ret-1]='\0';	/* split the string */	do {		tok=strtok(readbuf,"=");		if (tok==NULL) {			break;		}		strncpy(temp.key,tok,KEYLEN);		tok=strtok(NULL,"&");		if (tok==NULL) {			break;		}		strncpy(temp.val,tok,VALLEN);		addnode(&inputs,&temp);		while (1) {			tok=strtok(NULL,"=");			if (tok==NULL) {				break;			}			strncpy(temp.key,tok,KEYLEN);			tok=strtok(NULL,"&");			if (tok==NULL) {				break;			}			strncpy(temp.val,tok,VALLEN);			addnode(&inputs,&temp);		}	} while(0);	fp=fopen(DEFAULTPASSWD,"r");	if (fp==NULL) {		htmlerror("Open password file error.");		exit(1);	}	do {		fgets(pwdline,PWDLINELEN,fp);		trunc_ret(pwdline);		tok=strtok(pwdline,",");		strcpy(username,tok);		tok=strtok(NULL,",");		strcpy(password,tok);		if (strcmp(getvalbykey(&inputs,"login"),username)) {			continue;		}		if (strcmp(getvalbykey(&inputs,"secret"),password)) {			continue;		}		login=1;		break;	} while (!feof(fp));	if (login) {		printf("Login OK.");	} else {		printf("Login Failed.");	}	exit(0);}voidhtmlerror(char *t){	printf("<font color=\"#ff0000\"><h3>%s</h3></font>",t);}voidtrunc_ret(char *p){	int i=0;	while (p[i]!='\0') {		if (p[i]=='\n') {			p[i]='\0';			return;		}		i++;	}}intaddnode(Node_t *head, Pair_t *data){	Node_t *temp;	if (head==NULL || data==NULL) {		return -1;	}	temp=(Node_t*)malloc(sizeof(Node_t));	if (temp==NULL) {		return -1;	}	strcpy(temp->data.key,data->key);	strcpy(temp->data.val,data->val);	temp->next=head->next;	head->next=temp;	return 0;}intdumplist(Node_t*p){	while (p->next != NULL) {		p=p->next;		printf("Key=%s\tVal=%s\n",p->data.key,p->data.val);	}	return 0;}char*getvalbykey(Node_t *p, char *key){	while (p->next != NULL) {		p=p->next;		if (!strcmp(p->data.key,key)) {			return(p->data.val);		}	}	return 0;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -