2010-03-24 97 views
0

下面的代码获取用户名/密码并通过backend.php脚本运行它。登录表单运行脚本没有刷新页面,但需要删除表单才能成功

<?php session_start(); ?> 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" 
"http://www.w3.org/TR/html4/strict.dtd"> 
<html> 
<head> 
    <script src="http://code.jquery.com/jquery-latest.js"></script> 
    <script type="text/javascript"> 
     $(document).ready(function() { 
      $("#login_form").submit(function() { 
       var unameval = $("#username").val(); 
       var pwordval = $("#password").val(); 
       $.post("backend.php", { username: unameval, 
       password: pwordval }, function(data) { 
        $("#status p").html(data); 
       }); 
       return false; 
      }); 
     }); 
    </script> 
    </head> 
<body> 
<?php 
    if(isset($_SESSION['user_session'])) { 
     print '<p>user '.$_SESSION['user_session'].' logged in</p>'; 
    } else { ?> 
     <form id="login_form" method="post"> 
      <p>Username: <input type="text" id="username" name="username" /></p> 
      <p>Password: <input type="password" id="password" name="password" /></p> 
      <p><input type="submit" value="Login" /></p> 
     </form> 
     <div id="status"> 
      <p></p> 
     </div> <?php 
    }?> 

</body> 
</html> 

它正确地认证用户,但我想要的是一旦成功隐藏表单。

这里是页面的样子提交表单前:http://grab.by/3hoH

这里是表单已成功提交后,页面:http://grab.by/3hoR

我想我需要运行一些JavaScript来检查成功,如果成功,则不显示表格,如果!成功,显示表格。

我不确定如何做到这一点,如果是这样的话。

backend.php代码

<?php 
session_start(); 
ini_set('display_errors',1); 
error_reporting(E_ALL); 
require_once('adLDAP.php'); 
//header('Content-type: text/json'); 
$adldap = new adLDAP(); 

if(isset($_POST['username']) && isset($_POST['password'])) { 
    $username = $_POST['username']; 
    $password = $_POST['password']; // associated password 

    // connect to ldap server 
    $authUser = $adldap->authenticate($username, $password); 
    if ($authUser === true) { 
     print "<p>authuser true</p>"; 
     $_SESSION['user_session'] = $username; 

     if(isset($_SESSION['user_session'])) { 
      print "<p>session is set</p>"; 
     } 
    } 
    else { 
     print "<p>User authentication unsuccessful</p>"; 
    } 
} 
?> 

回答

2

您需要检查响应,看是否登录成功,而且,如果它没有,删除登录表单。

您可以通过编写

$('#login_form').remove(); 

要检查登录是否成功,你应该改变你的服务器端脚本返回一个JSON object指示登录是否成功,包含邮件中删除登录表单。
例如:

{ success: true, message: "You have successfully logged in" } 
相关问题