1. 程式人生 > >百度t7 教程 node 初步4 使用者註冊

百度t7 教程 node 初步4 使用者註冊

1,   Node 靜態頁面的寫法

index.html

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>index</title>

	<script type="text/javascript"  src="jquery.js"></script>

	<script type="text/javascript">
		
			window.onload= function(){
				let oBtn = document.getElementById('btn')
				let oUserName = document.getElementById('username')
				let oPsw= document.getElementById('psw')

				oBtn.onclick = function(){
					let oUserText= oUserName.value;
					let oPswText= oPsw.value

					 //傳送 ajax  請求!
					$.ajax({
						url:'http://localhost:3000/reg',
						data:{
							'username':oUserText,
							'password':oPswText
						},
						success: function(data){
							alert('請求成功' + data)
						},
						error:function(data){
							alert("請求失敗: "+data)
						}
					})

				}
			}

	</script>
</head>
<body>
	
	<h1>歡迎來到主頁!!</h1>

	
	username:<input  id="username" type = 'text'/> </br>
 	password:<input type="text" id="psw"></input> </br>

 	<input type="button" id="btn" value="提交">
			
	
</body>
</html>

2, index.js 寫法

let http = require('http')
let fs = require('fs')
let url = require('url')
let mysql=require('mysql')

// 在這裡就可以寫註冊的邏輯了!
		
		var connection = mysql.createConnection({
		host : 'localhost',
		user : 'root',
		password : 'root',
		database : 'action'
		});
		connection.connect();



//   建立個 伺服器
let server = http.createServer(function(req,res){

	// 1, 拆解url 
	// es6 解構賦值  

	let {pathname,query}  = url.parse(req.url,true);
	let {username,password}= query;

	console.log(pathname,username,password)
	if(pathname=='/login'){
			res.write('login')
			res.end()		
	}else if(pathname=='/reg'){
		console.log(username)
		console.log(password)
		




		// 1,校驗 ,
		var pattern = /\w{6,18}/i;
		if(!pattern.test(username)){
			res.write('使用者名稱不符合必須是字母數字下劃線, 並且是6-18位')
			res.end();
		}else if(!pattern.test(password)){
				res.write('密碼不符合規範並且是6-18位')
				res.end();
		}else {
			// 去資料庫裡查詢使用者名稱是否存在,若存在也 返回資訊
			let sql = `select id from account where username='${username}';`
			connection.query(sql,function(err,data){
				if(err){
					res.writeHeader(404)
					res.write('資料庫出錯')
					res.end();
				}else{
					if(data.length>0){
						// 使用者名稱已經存在:
					  	res.write('username is exist!!')
					  	res.end();
					}else {
						// 講 使用者插入到資料庫中 
let sql2  =  `insert into account(username,password,islogin)  values('${username}','${password}',1);`
				console.log(sql2)
					connection.query(sql2,function(err,data){
							if(err){
								res.writeHeader(404)
								res.write('資料庫出錯')
								res.end();
															
							}else{
								res.write('註冊成功 ')
								res.end();
												
							}
					})


					}


				}
			})

		}



	}else if(pathname=='/index.html'){
		//讀取檔案的操作: 
		fs.readFile('./public/index.html',function(err,data){
			if(err){
				//若 讀取  檔案失敗,
				res.writeHeader(404)
				res.write('檔案不存在')
				res.end();
			}else{
				res.write(data.toString())
				res.end();
			}
		})
	}else if(pathname=='/jquery.js'){

		fs.readFile('./public/jquery.js',function(err,data){
			if(err){
				//若 讀取  檔案失敗,
				res.writeHeader(404)
				res.write('檔案不存在')
				res.end();
			}else{
				res.write(data.toString())
				res.end();
			}
		})

	}	
});


// 監聽3000 埠 
server.listen(3000,function(){
	console.log('connet  success')
})


需要 注意 的 是,只要是靜態頁面 ,就 會走node 的邏輯, 比如那個jquery 引入,它也會走 node 路徑,所以都要處理 

所以在node 要處理靜態 資源 ,它不 會自動引入,它 還是 需要找node ,可見 Node是個底層的  伺服器

關於 使用者的註冊邏輯,邏輯比較簡單,但是寫起來稍微繁瑣些,實際 上難度 不大,就 是 很繁瑣 

crud 就是很繁瑣!!其實蠻無趣的!

好吧,這篇就寫麼多, 下一篇,再把註冊寫完,就基本 完成 了 !

不完成 ,就 沒辦法往下學習,因為

後面的 才是最有價值的 !!