2010-03-16 33 views
0

我有一個登錄腳本,如果成功,應檢查是否存在會話,如果不存在,則顯示登錄表單,發佈後,驗證,如果成功,設置會話。代碼忽略早期成功登錄的有效會話

我成功發佈表單併成功綁定後返回頁面,它完全忽略會話並顯示登錄頁面。

我不知道我在做什麼錯,我有條件錯誤的順序?我應該在測試之前查看會話以查看錶單是否已發佈?

<? 
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

嘗試在檢查會話時使用$ _SESSION而不是$ HTTP_SESSION_VARS。