1.node登录注册
from.js
const fs = require('fs')
const http = require('http')
const url = require('url')
const qs = require('querystring')
http.createServer((request, response) => {
const { pathname, query } = url.parse(request.url)
console.log(' pathname, query', pathname, query);
if (pathname === '/register') {
response.writeHead(200, { 'Content-type': 'text/html;charset=utf-8' },)
const newUserData = qs.parse(query)
console.log('newUserData', newUserData);
fs.readFile('./data/form.json', 'utf-8', (error, data) => {
if (error) {
console.log('你不要出来', error);
} else {
const newDataList = JSON.parse(data)
let hasRegister = newDataList.filter(ele => ele.username === newUserData.username)
if (hasRegister.length === 1) {
response.end('<script>alert("用户名已存在,请登录");location.href="http://127.0.0.1:3000/dl"</script>')
} else {
newUserData.id = newDataList[newDataList.length - 1].id + 1
newDataList.push(newUserData)
fs.writeFile('./data/form.json', JSON.stringify(newDataList), { encoding: 'utf-8', flag: 'w' }, err => {
err
? response.end('<script>alert("注册失败");location.href="http://127.0.0.1:3000/zc"</script>')
: response.end('<script>alert("注册成功,请登录");location.href="http://127.0.0.1:3000/dl"</script>');
})
}
}
})
} else if (pathname === '/login') {
response.writeHead(200, { 'Content-type': 'text/html;charset=utf-8' },)
let usetData = []
request.on('data', (check) => {
usetData.push(check)
})
request.on('end', () => {
let data = Buffer.concat(usetData)
const qsData = qs.parse(data.toString())
fs.readFile('./data/form.json', 'utf-8', (error, data) => {
let jsonData = JSON.parse(data)
let result = jsonData.filter(ele => ele.username === qsData.username)
if (result.length === 1) {
if (result[0].password === qsData.password) {
response.end('<script>alert("登录成功");location.href="http://127.0.0.1:3000/index"</script>')
} else {
response.end('<script>alert("密码错误");location.href="http://127.0.0.1:3000/dl"</script>')
}
} else {
response.end('<script>alert("用户名不存在,请先去注册!");location.href="http://127.0.0.1:3000/zc"</script>')
}
})
})
} else if (pathname === '/zc') {
response.end(fs.readFileSync('./from/register.html', 'utf-8'))
} else if (pathname === '/dl') {
response.end(fs.readFileSync('./from/login.html', 'utf-8'))
} else if (pathname === '/index') {
response.end(fs.readFileSync('./from/index.html', 'utf-8'))
}
}).listen('3000', '127.0.0.1', () => {
console.log('serve is running');
})
404.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
*{
padding: 0px;
margin: 0px;
}
h1{
line-height: 500px;
color: #cccccc;
text-align: center;
}
</style>
</head>
<body>
<h1>哎呀亲 页面找不到了</h1>
</body>
</html>
index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
* {
padding: 0;
margin: 0;
}
div {
height: 60px;
background-color: blueviolet;
color: white;
font-size: 24px;
text-align: center;
line-height: 60px;
}
p {
font-size: 18px;
padding: 12px 15px;
}
</style>
</head>
<body>
<div>卡尔 · 弗兰兹</div>
<p>
据说卡尔·弗兰兹是旧世界最伟大的政治家。同时他还是一位军事天才和英勇的将领。这位皇帝常独自带兵,挥舞着那把传说中西格玛留下的盖尔玛拉兹战锤,就如同旧世界的勇士之神一般重击着帝国的每个敌人。
卡尔·弗兰兹是上一任帝国皇帝路易伯德之子。在他父亲死后他顺理成章的成为了帝国皇帝候选人之一。然而在帝国皇位并不是世袭继承的,而是要通过帝国选帝议会的选举决定。
虽然确切的细节和准确的原因都已无人知晓,但是看上去卡尔·弗兰兹被认为太过于年轻且缺乏经验。他自己也并不相信自己能胜过另一位候选人,米登兰伯爵鲍里斯·托德布林格。最初的结果是鲍里斯8票,卡尔·弗兰兹仅获4票,剩下3名选帝侯弃权。然而卡尔·弗兰兹家族的老友,奥斯特兰伯爵马克西米连·冯·科宁格斯瓦德,成功的说服了其中2位转向投票给卡尔·弗兰兹。西格玛议会的3张选票也全部投给了卡尔·弗兰兹。最终卡尔·弗兰兹赢得了选举。
作为皇帝,卡尔同时也是帝国军队的领袖,指挥过一系列的战斗(其中最著名的是对阵巴托尼亚人的诺度因之战,对阵血堡吸血鬼的血堡之战和最近的混沌风暴)。在战斗中卡尔经常携带西格玛之锤和银色圣徽。他经常骑在自己忠实的狮鹫死爪上面。有时候卡尔·弗兰兹还会以瑞克领亲王的身份挥舞瑞克领符文剑进入战场。
卡尔·弗兰兹已婚并有2子女:他的大儿子路易伯德,显然是以卡尔·弗兰兹自己的父亲名字命名,而小女儿的名字未知。卡尔·弗兰兹还有个姐妹,也已婚配。
卡尔·弗兰兹有一系列的正式头衔,比如帝国的保护者,黑暗的对抗者,皇帝本尊和诸皇帝之子,瑞克领选帝侯和阿尔道夫亲王。
==================================================================================================
诺度因之战是人类帝国和巴托尼亚之间的一场冲突。战斗爆发的确切时间已经无可考证,只能推算大概是在2502年之后的某个时间,因为这是帝国皇帝卡尔·弗兰兹带领帝国军队打的战斗。在战斗中卡尔·弗兰兹带领瑞克近卫骑士团以一次完美的冲锋彻底击垮了巴托尼亚骑士们。
==================================================================================================
帝国继承法并不是世袭继承,新皇帝是选举产生而并非是直接从父亲手里继承。
在皇帝死后帝国议会聚集开会,选帝侯——整个帝国最有影响力,最强大,最重要的人——将在那时选出新皇帝。
选帝侯事实上也可以废黜一名虚君(虽然造成的后果多半是三皇之战这种结果)。
最初帝国有12位选帝侯,由各行省的统治者世袭继承。今日则有15位选举人,其中仅有10位是选帝侯。2个行省和他们的受尊敬的统治家族一起都已完蛋了。
尤里克教会主教渐渐的也成为了一名选举人,而最成功的例子是西格玛教会,除了西格玛教会的总主教本人外,还有另外2位西格玛大主教也成为了选举人,因此西格玛教会一共有3票。
这一发展加深了2个教会之间因为不同的政治追求而产生的天然对立,这一对立也成为了如今大部分皇帝选举中的重要因素。
在通常情况下西格玛教会的3票总是会投给住在阿尔道夫的瑞克领伯爵,因为阿尔道夫也是西格玛教会的中心。
而尤里克主教则总是会投票给米登兰伯爵,因为米登兰伯爵都是虔诚的尤里克信徒,同时也住在作为尤里克教会老家的米登海姆。
在帝国历1010年皇帝胖子卢德维格将一张选举票奖励给了穆特长者,他代表的是穆特半身人自治领的半身人们。
目前的10位选帝侯:阿瓦兰选帝伯爵,霍克兰选帝伯爵,米登兰选帝伯爵,诺德兰选帝伯爵,奥斯特兰选帝伯爵,奥斯特马克选帝伯爵,瑞克领选帝伯爵,斯特兰选帝伯爵,塔拉贝克领选帝伯爵,维森兰选帝伯爵。
5位新晋选帝侯:尤里克主教,西格玛总主教,2位西格玛大主教,穆特长者。
失去地位的选帝侯:
索尔兰选帝伯爵:在选帝伯爵家被兽人军阀入侵杀光后行省被维森兰吞并。
德拉克瓦尔德选帝伯爵:这个行省被米登兰和诺德兰瓜分。
玛丽恩堡选帝伯爵:这个行省现在变成了独立的威斯特兰亲王国。
</p>
</body>
</html>
login.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
* {
padding: 0px;
margin: 0px;
}
#app {
width: 400px;
background: #cccccc;
padding: 30px 100px;
margin: 30px auto;
}
#app div {
line-height: 50px;
}
#app div input {
width: 300px;
height: 22px;
border-radius: 11px;
padding-left: 10px;
border: none;
outline: none;
}
#app div #sub {
width: 380px;
height: 30px;
background: rgb(78, 123, 255);
color: white;
border: none;
border-radius: 15px;
}
</style>
</head>
<body>
<div id="app">
<form action="http://127.0.0.1:3000/login" method="POST">
<div><label>用户名 : <input type="text" name="username" /></label></div>
<div><label>密 码 : <input type="text" name="password" /></label></div>
<div><input type="submit" value="登录" id="sub" /></div>
</form>
</div>
</body>
</html>
register.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
* {
padding: 0px;
margin: 0px;
}
#app {
width: 400px;
background: #cccccc;
padding: 30px 100px;
margin: 30px auto;
}
#app div {
line-height: 50px;
}
#app div input {
width: 300px;
height: 22px;
border-radius: 11px;
padding-left: 10px;
border: none;
outline: none;
}
#app div #sub {
width: 380px;
height: 30px;
background: orange;
color: white;
border: none;
border-radius: 15px;
}
</style>
</head>
<body>
<div id="app">
<form action="http://127.0.0.1:3000/register" method="GET">
<div><label>用户名 : <input type="text" name="username" /></label></div>
<div><label>密 码 : <input type="text" name="password" /></label></div>
<div><input type="submit" value="注册" id="sub" /></div>
</form>
</div>
</body>
</html>
使用
1. nodemon 启动
2. 在浏览器输入localhost:3000/zc