скрипт запуска формы входа без обновления страницы, но необходимо удалить форму после успешного завершения - PullRequest
0 голосов
/ 24 марта 2010

Код ниже получает имя пользователя / пароль и запускает его через скрипт 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>";
    }
}
?>

1 Ответ

2 голосов
/ 24 марта 2010

Вам необходимо проверить ответ, чтобы убедиться, что вход в систему прошел успешно, и, если это произошло, удалить форму входа.

Вы можете удалить форму входа, написав

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

Чтобы проверить, успешно ли выполнен вход в систему, необходимо изменить сценарий на стороне сервера, чтобы он возвращал JSON-объект , который указывает, успешно ли выполнен вход в систему и содержит ли сообщение.
Например:

{ success: true, message: "You have successfully logged in" }
...