2015-09-07 29 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代码,简单地只是用它,就像任何其他变量。

希望这会有所帮助

相关问题