код, игнорирующий действительный сеанс из более раннего успешного входа - PullRequest
0 голосов
/ 16 марта 2010

У меня есть сценарий входа в систему, который при успешном выполнении должен проверить, существует ли сеанс, если нет, отобразить форму входа в систему, после публикации, аутентифицироваться, в случае успеха установить сеанс.

После того, как я успешно опубликовал форму, и она успешно связалась, затем вернулся на страницу, он полностью игнорирует сеанс и отображает страницу входа.

Я не знаю, что я делаю неправильно, у меня есть условия в неправильном порядке? Стоит ли искать сессию перед тестированием, чтобы увидеть, была ли опубликована форма?

<?
session_start();

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

    // connect to ldap server
    $ldapconn = ldap_connect("ldap://ldap.server")
        or die("Could not connect to LDAP server.");

    if ($ldapconn) {
        // binding to ldap server
        $ldapbind = ldap_bind($ldapconn,$username,$password);
        // verify binding
        if ($ldapbind) {
            echo "LDAP bind successful...";
            $_SESSION['valid_username'] = $username; 
        } else {
            echo "LDAP bind failed...";
        }
    }
} else {

    if(isset($HTTP_SESSION_VARS['valid_username'])) {
        print 'you are logged in - congrats';
    } else {
    ?>
    <h1>Login</h1>
    <form method="post" action="<?=$_SERVER["PHP_SELF"]?>">
        <p>username: <input type="text" name="username" /><br />
            password: <input type="password" name="password" /></p>
            <p><input type="submit" name="submit" value="submit" /></p>
    </form><?
    }
}
?>

1 Ответ

1 голос
/ 16 марта 2010

попробуйте использовать $ _SESSION вместо $ HTTP_SESSION_VARS при проверке сеанса.

...