nodejs制作簡單的登錄注冊頁面


首先,我用的是mysql數據庫,我現在比較熟悉的就是它了,,我現在存不了中文數據╥﹏╥...

先建立數據庫,創建接下來要填寫的信息的列

先建立首頁,兩個按鈕:

沒錯,是有點丑。。。其實這是朴素

登錄按鈕連接 "register.html",注冊按鈕連接"login.html";兩個頁面大概就長這樣。。。。也很簡朴。。。。

      

兩個都是form表單,首先注冊。。。填完數據后就跳轉到登錄界面

js文件:

app.post('/login.html',function(req,res){
    var postData = "";
    req.addListener("data",function(postDataChunk){
        postData += postDataChunk;
    });
    req.addListener("end",function(){
        console.log("數據接收完畢!");
        var json = qs.parse(postData);
        nextId +=1;
        console.log('nextId:'+nextId);
        var  userAddSql = "INSERT INTO `users`.`userinfo` (`id`,`name`, `password`, `age`,`sex`, `tel`,`nickname`) VALUES ('"+nextId+"','"+json.name+"','"+json.password+"','"+json.age+"','"+json.sex+"','"+json.tel+"','"+json.nickname+"')";
        connect.query(userAddSql,function (err,mysqldata) {
            if(err) throw err;
            console.log('數據存入成功!');
        });
        fs.readFile('login.html',function(err,data){
            if(err){
                throw err;
            }else{
                res.end(data);
            }
        });
        res.setHeader('Content-Type','text/html');
    });
});

在此之前,為了使每次存入的id都自加,運行js文件時,就讀取數據庫里最大的id,在它的基礎上自加。(當然,這個方法有點笨,希望大神指點一下)

var  userAddSql_Params = "SELECT * FROM users.userinfo";

connect.query(userAddSql_Params, function(err, rows) {
    if (err) throw err;
    for (var i = 0; i < rows.length; i++) {
        var list = {
            id : rows[i].id,
            name : rows[i].name,
            password : rows[i].password,
            age : rows[i].age,
            sex : rows[i].sex,
            tel : rows[i].tel,
            nickname : rows[i].nickname
        };
        arr[i] = list;
    }
    idnum();
});

function idnum(){
    var arr2=[];
    for(var i = 0;i<arr.length;i++){
        arr2[i]=arr[i].id;
    }
    arr2.sort(function(a,b){return b-a});
    console.log('數據輸出。。。');
    nextId=arr2[0]+1;
}

然后就是登錄啦~~~填寫登錄用戶名和密碼點擊按鈕,提交數據,后台獲取登錄信息,與數據庫里的用戶名密碼一一匹配,一旦有相符的,就登陸成功,跳轉至 ''home.html'頁面,並顯示該用戶的所有注冊信息;如果沒有匹配成功,跳轉至 ''home.html'頁面,顯示登陸失敗。

app.post('/home.html',function(req,res){
    var postData2 = "";
    req.addListener("data",function(postDataChunk){
        postData2 += postDataChunk;
    });
    req.addListener("end",function(){
        console.log("數據接收完畢!");

        connect.query(userAddSql_Params, function(err, rows) {
            if (err) throw err;
            for (var i = 0; i < rows.length; i++) {
                var list = {
                    id : rows[i].id,
                    name : rows[i].name,
                    password : rows[i].password,
                    age : rows[i].age,
                    sex : rows[i].sex,
                    tel : rows[i].tel,
                    nickname : rows[i].nickname
                };
                arr[i] = list;
            }
            flag = judges(postData2);        //判斷用戶名和密碼是否正確
            console.log('判斷密碼是否匹配:'+flag);
        });

        fs.readFile('home.html',function(err,data){
            if(!flag){
                data = '<h2><a href="login.html">用戶名或密碼錯誤!點擊這里重新登錄</a></h2>';
                console.log('登錄失敗!');
            }else{
                data = '<ul style="list-style: none">'+'<li>登陸成功!</li>'+
                '<li>用戶名:'+arr[list_num].name+'</li>'+
                '<li>昵稱:'+arr[list_num].nickname+'</li>'+
                '<li>密碼:'+arr[list_num].password+'</li>'+
                '<li>年齡:'+arr[list_num].age+'</li>'+
                '<li>性別:'+arr[list_num].sex+'</li>'+
                '<li>手機號:'+arr[list_num].tel+'</li>'+
                '</ul>'
            }
            if(err){
                throw err;
            }else{
                res.end(data);
            }
        });
        res.setHeader('Content-Type','text/html');
    });
});

不知道'home.html'頁面如何獲取數據庫的內容,所以只能用字符串拼接

function judges(post){
    var json = qs.parse(post);
    console.log('當前需匹配的信息:',json);
    for(var s = 0;s<arr.length;s++){
        if((arr[s].name==json.name)&&(arr[s].password==json.password)){       //當用戶名和密碼都一致時,return flag
            list_num = s;
            flag = true;
            return flag;
        }else{
            flag = false;
        }
    }
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM