2015-09-07 30 views
1

我爲SignIn創建了一個表單。由於我不想在提交表單時刷新頁面,因此我使用$ .post方法將數據發送到數據庫並接收該數據。

我有一個問題,瀏覽器不保存密碼,如果他們想保存,因爲表單不會以通常的方式提交,我想也許cookie是好方法,但我認爲這是不安全的。

$。員額用於登錄

function formsubmited(form, p, username) { 
    $.post("process_login.php", {username: username.value, p: p.value}, 
      function(response) { 
       if(response == 'login') 
       { 
         // do something 
       } 
      } 
}); 

HTML表單樣品

<form name="form_login"> 
    <input name="username"/> 
    <input type="password" name="password"/> 
    <input type="button" value="login" onclick="formsubmited(this.form, this.form.password, this.form.username);" /> 
</form> 

如何在瀏覽器中存儲密碼的形式時,以這種方式提交的例子嗎? 有什麼辦法嗎?或者我應該使用cookie?

+0

爲什麼使用AJAX進行表單提交時不會有會話cookie集?你想每次都傳遞密碼,並認爲這更安全嗎?您可以使用LocalStorage執行此任務,但是如果您想要安全答案,則應提供更多信息。這是什麼形式?什麼返回?會議如何處理,如果有的話?在隨後的請求中預計什麼? – Brad

+1

在你的process_login.php腳本中,設置'$ _SESSION [「password」] = $ _POST [「password」]''和'$ _SESSION [「username」] = $ _POST [「username」]''。通過這種方式,您可以在用戶登錄後訪問'$ _SESSION []'變量 – Notaras

+0

@kapetanios我認爲這是一個很好的提議,請在Answer部分用$ _SESSION解釋關於send和rcieve數據的更多信息,謝謝 – MojtabaSh

回答

1

問題的原因是您使用的是input type="button",並且瀏覽器保存密碼不會在上述輸入類型中觸發。使用input type="submit"

只是做一個改變在這一行

<input type="button" value="login" onclick="formsubmited(this.form, this.form.password, this.form.username);" />

不要使用button,使用submit

因此,使它如下:

<input type="submit" value="login" onclick="return formsubmited(this.form, this.form.password, this.form.username);" />

和在添加return false函數的結尾,以便表單不被獲取。

+0

謝謝你的回答@sanjeev我改變了提交輸入我的輸入標籤,並且還在formubmited()方法結束時返回false,它將密碼保存在瀏覽器,但它會提交頁面和瀏覽器將刷新到process_login.php – MojtabaSh

+0

如果是嘗試添加在函數的頂部(只是爲了測試),如果它解決了問題是,你在函數的末尾添加了'return false'裏面的請求 – sanjeev

+0

我做到了這一點,它不工作了 – MojtabaSh

0

使用PHP設置會話,這將在服務器上存儲密碼並且可以在每次需要時調用密碼,例如,像..

session_start(); 
$_SESSION['p']=$_POST['p']; 
1

這是我的評論,所以你可以理解的闡述。

什麼,你正在做的是做一個POST請求的PHP腳本像這樣:

$.post("process_login.php", {username: username.value, p: p.value},

如果你想這樣做使用JavaScript的話,我會親自將它更改爲做到這一點:

function formsubmited() { 
    var username = document.getelementsbyname("username").value; 
    var p = document.getelementsbyname("password").value; 
    $.post("process_login.php", {username: username, p: p}, 
     function(response) { 
      if(response == 'login') 
      { 
        // do something 
      } 
     } 
} 

,然後編輯你的HTML,使其看起來有點清潔這樣的:

<input type="button" value="login" onclick="formsubmited();" /> 

現在在您的PHP腳本中,您需要將POST數據存儲在內存中,以便在稍後階段使用它。最好的方法之一是使用$_SESSION[]陣列。

所以,你的PHP腳本將這個樣子

<?php 
    session_start(); 
    //On the server side, you can access data you have sent there in the $_POST[] array. 
    //The key you specify in the array has the exact name as the parameter you pass in 
    //javascript: 
    $inputtedUsername = $_POST["username"]; 
    $inputtedPassword = $_POST["p"]; 
    //first do a check to determine if the username and password are correct 
    //add your code here: 
    //.... 

一旦你加入你的代碼,以確定該用戶名和密碼是否正確,然後你可以繼續在內存中存儲用戶名和密碼:

在JavaScript代碼
$_SESSION["username"] = $inputtedUsername; 
    $_SESSION["p"] = $inputtedPassword; 

現在,你期望的腳本返回login關鍵字,以確定在登錄過程是成功的

//basically you'll need to do something like this 
    if($yourloginboolean == true){ 
     echo "login"; 
    }else{ 
    echo "error"; 
    } 
    ?> 

現在,在未來,應該要使用$_SESSION["username"]$_SESSION["p"]在今後的任何PHP代碼,簡單地只是用它,就像任何其他變量。

希望這會有所幫助

相關問題