2016-11-04 134 views
0

我正嘗試創建一個具有「登錄」功能的服務器(用戶名和密碼必須匹配)。我試圖在「低級」中這麼說,沒有擴展或任何東西。現在當頁面被拉起時,它們都可以訪問並且表單顯示,但是當按鈕被點擊時,什麼都不會發生。沒有任何東西寫入控制檯,並且check()永遠不會被調用。HTML用Javascript登錄?

我已經嘗試了很多東西 - 更改函數,按鈕的類型,我從窗體中獲取數據的方式,以及它們都不起作用。我真的很感激正確的方向推進(並且,總的來說,如果有人也可以談論如何設置一個cookie,當用戶登錄時我也會很感激它,但這是非常多的額外手頭的問題)。

var http = require("http"); 
var url = require("url"); 

var server = http.createServer(function (req, response){ 
    var page = url.parse(req.url).pathname; 

    response.writeHead(200, {'Content-Type':'text/html'}); 
    if (page == '/'){ 
     //home page 
    } 

    else if (page == '/page1'){ 
     //page one 
    } 

else if (page == '/auth'){ 
     response.write('<html>'+ 
     '<h1><center>Sign up for dumblr home of the dumblr</center></h1>'+ 
     '<form method="POST" name="auth" >'+ 
     'Username: <input type="text" name="user" required /> <br />'+ 
     'Password: <input type="password" name="pwd" required/> <br /> '+ 
     '<input type="button" value="Submit" onclick="check(this.form)"/> '+ 
     '</form>'); 

     function check(form){ 
      console.log("1"); 

      if(form.user.value == form.pwd.value){ 
       //response.setHeader('Set-Cookie', ['type=ninja', 'language=javascript']); 
       console.log("Cookie is set"); 
       return true; 
      } 
      else{ 
       response.write("<h1>Sorry, those are not correct. Try again.</h1>") 
       console.log("Didn't work") 
       return false; 
      } 
    } 


} 
    response.end(); 

}).listen(3000); 

console.log('Server running at http://127.0.0.1:3000'); 

回答

1

你在服務器端和客戶端混合使用javascript函數。

有當您打開

http://localhost:3000/auth

創建一個非常簡單的頁面,在服務器端的代碼,但在瀏覽器這個頁面不具有的功能檢查(形式)。該功能在您的頁面上不存在,但僅在服務器端存在。所以當你點擊按鈕時,瀏覽器無法打電話檢查,就是這樣。你應該從一個更簡單的方法開始。只需在客戶端嘗試使用JavaScript編寫簡單頁面,並嘗試在那裏解決您的問題。