modulo di login in esecuzione script senza pagina rinfrescante, ma necessario rimuovere forma una volta di successo

StackOverflow https://stackoverflow.com/questions/2508698

Domanda

Il codice di seguito ottiene il nome utente / password e lo esegue attraverso lo script 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>

E 'autentica l'utente corretto, ma quello che io voglio che è nascondere il modulo, una volta di successo.

Ecco cosa la pagina si presenta come prima che il modulo viene inviato: http://grab.by/3hoH

Questa è la pagina dopo il modulo è stato inviato correttamente: http://grab.by/3hoR

Credo di aver bisogno di eseguire alcuni javascript per verificare la presenza di successo, allora se il successo, non vengono visualizzati sotto forma, se il successo!, Forma di visualizzazione.

Sono sicuro su come farlo, se questo è il caso.

Codice 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>";
    }
}
?>
È stato utile?

Soluzione

È necessario controllare la risposta per vedere se il login riuscito, e, se così fosse, rimuovere il form di login.

È possibile rimuovere il modulo di login, scrivendo

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

Per verificare se l'accesso è riuscito, è necessario modificare lo script lato server per restituire un oggetto JSON che indica se l'accesso è riuscito e contiene un messaggio.
Ad esempio:

{ success: true, message: "You have successfully logged in" }
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top