如果他或她的密码不正确,如何重定向并通知用户?

时间:2011-03-25 04:37:16

标签: php javascript jquery html ajax

假设我在登录页面上有这样的代码块:

<form action="login_action.php" method="post">
    <div id="account">
        <div class="form-label">Username:</div>
        <div class="form-input"><input name="username" type="text" /></div>
        <div class="form-label">Password:</div>
        <div class="form-input"><input name="password" type="password" /></div>
        <div class="form-submit"><input type="submit" value="Submit" /></div>
    </div>
</form>

login_action文件使用给定的凭据查询数据库,如果它们正确,则执行$_SESSION['username'] = $username;

这很好用。但是,如果用户提供的凭据不正确,理想情况下页面不会重定向,而是会在用户名之前的行上显示错误消息。这是我对如何解决问题感到困惑的部分。

我是否必须使用JQuery捕获提交按钮按下并使用AJAX将用户凭据发布到php文件?然后,这将删除登录页面上的表单。我想我可以返回一个字符串,指明凭据是否有效,如果没有,它会向帐户div附加一条消息,证明凭据不正确。

这会是解决此类问题的标准方法吗?自从最近发现AJAX以来,我几乎把它用于所有东西,我不确定在这种情况下它是否是理想的解决方案。覆盖提交按钮的默认行为并删除表单对我来说似乎有点不好,但我不确定。这是SO如何解决这个问题?

5 个答案:

答案 0 :(得分:2)

我通常做的是,使用条件声明&amp;如果密码不正确,则重定向回到表单。假设您的表单页面是form.php,重定向可以是form.php?status = password。 然后,您可以在表单中显示错误消息

if ($_GET['status'] == 'password')
   echo "Incorrect Password";

答案 1 :(得分:0)

你几乎可以随心所欲地做到这一点,AJAX方法的唯一优势(我可以看到)可能不那么带宽了。

$("form").submit(function(e){
    e.preventDefault();
    //AJAX & other code here
});

答案 2 :(得分:0)

大多数基本登录表单使用的方法是将登录表单发回给自己。如果用户名或密码有问题,只需使用PHP回显错误消息到该页面。

如果由于某种原因您确实需要单独的处理程序页面,则可以使用“闪烁”来临时在会话中存储错误消息。然后,登录页面可以显示该错误消息并将其从会话中删除。

答案 3 :(得分:0)

通过ajax将表单中的值发送到php脚本几乎是完美的解决方案。页面不会重新加载,用户将从服务器快速获得响应。这是你的jQuery:

$('#form').submit(function(e){
  // there are many ways to assemble this input data array, this is an easy clunky way, 
  // you could also use $.each to iterate over all input elements, get their
  // vals, and pop them into the inputVals array. 

  var inputVals = [$('#input_id1').val(), $('#input_id2').val()];

  $.ajax({
    url:"your_php_script.php",
    type: 'POST',
    data:inputVals,
    success:function(data){
      // data returned from php script as a 'json_encode' string

    }
  });

  return false;

})

答案 4 :(得分:0)

//`

if(isset($_GET['msg']))
{  
 $message=$_GET['msg'];
}

?>` add following to ur login form  

// ----------------------    //如果密码不匹配,请添加此代码以显示错误消息

    <p id="m2">
                                <?php
                               if(isset($_GET['msg']))
{  
 echo $message;
}else{
                                   echo "enter password";
                                   }
                                   ?>
                                </p>




//------------------
add this code to your login.php script



$message="password do not match";
header("Location:index.php?msg=$message");