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を実行する必要があると思います。成功した場合はフォームを表示せず、!successの場合はフォームを表示します。

その場合、どうすればよいかわかりません。

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>";
    }
}
?>
4

1 に答える 1

2

レスポンスをチェックしてログインが成功したかどうかを確認し、成功した場合はログイン フォームを削除する必要があります。

書くことでログインフォームを削除できます

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

ログインが成功したかどうかを確認するには、サーバー側のスクリプトを変更して、ログインが成功したかどうかを示し、メッセージを含むJSON オブジェクトを返す必要があります。
例えば:

{ success: true, message: "You have successfully logged in" }
于 2010-03-24T15:09:07.597 に答える