今天忙準(zhǔn)備面試耀销,就稍微弄了一點(diǎn)東西
用前一天學(xué)到的node.js知識(shí)弄了極其簡(jiǎn)單的用戶名登錄系統(tǒng)
首先需要有一個(gè)寫著用戶名忽洛,密碼對(duì)應(yīng)關(guān)系的json文件,調(diào)了半天發(fā)現(xiàn)這部分知識(shí)有點(diǎn)不清晰了壹堰,回頭得整理一下乙各,總之就是這么個(gè)東西谐岁,請(qǐng)無視奇奇怪怪的名字醋奠,json的名字為login.js
[
{"name":"斯忒諾","password":"1"},
{"name":"尤瑞艾莉","password":"2"},
{"name":"美杜莎","password":"3"},
{"name":"戈?duì)栘?,"password":"4"}
]
node.js除了異步讀取文件,也有同步讀取的方法
fs.readFileSync(fileUrl);
再利用JSON.parse()將其轉(zhuǎn)換為JSON格式伊佃,我們就可以獲得需要的數(shù)據(jù)了
var result=JSON.parse(fs.readFileSync("login.js"))
由于使用的用戶名密碼窜司,所以傳遞的方式選擇post,寫一份form表單
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<form method="post" action="http://localhost:8080/">
用戶:<input type="text" name="name" value="">
密碼:<input type="password" name="password" value="">
<input type="Submit" value="提交">
</form>
</body>
</html>
再用昨天學(xué)到的post獲取數(shù)據(jù)方式得到用戶輸入的用戶名密碼之后,與數(shù)據(jù)庫中的對(duì)比航揉,全部正確輸出sucessful塞祈,用戶名錯(cuò)誤輸出username is wrong,密碼錯(cuò)誤輸出password is wrong
廢話不多說直接上代碼
const http=require("http");
const fs=require('fs');
const querystring=require("querystring")
const urllib=require('url')
var server=http.createServer(function(request,response){
var str="";
request.on("data",function(data){
str+=data;
})
request.on("end",function(){
var post=querystring.parse(str)
var result=JSON.parse(fs.readFileSync("login.js"))
var name=post.name;
var password=post.password;
for(var i=0;i<result.length;i++)
{
if(name==result[i].name)
{
if(password==result[i].password)
{
response.write("sucessful");
break;
}
else
{
response.write("password is wrong");
break;
}
}
else if(i==(result.length-1))
{
response.write("username is wrong");
}
}
response.end()
})
})
server.listen(8080);
然后我發(fā)現(xiàn)response.write()中是中文的時(shí)候會(huì)出現(xiàn)亂碼帅涂,經(jīng)過一番嘗試之后發(fā)現(xiàn)议薪,需要在代碼中加入
response.writeHead(200, {'Content-Type': 'text/html; charset=utf-8'});
這句話規(guī)定了字符編碼UTF-8 - Unicode,就可以寫漢字了