将AD身份验证的php会话变量传递给另一个页面

时间:2014-06-17 21:24:51

标签: php session authentication session-variables

我在login.php中实现了AD身份验证,现在如果auth成功,我想将Users Given名称传递给另一个php页面,说app.php。

login.php

    <?php
     session_start();
    if(isset($_POST['username']) && isset($_POST['password'])){
    $adServer = "ldap://ad.my_domain.com";
    $ldap = ldap_connect($adServer);
    $username = $_POST['username'];
    $password = $_POST['password'];
    $ldaprdn = 'my_server' . "\\" . $username;
    ldap_set_option($ldap, LDAP_OPT_PROTOCOL_VERSION, 3);
    ldap_set_option($ldap, LDAP_OPT_REFERRALS, 0);
        $bind = @ldap_bind($ldap, $ldaprdn, $password);
    if ($bind) {
    $filter="(sAMAccountName=$username)";
    $result = ldap_search($ldap,"dc=my_domain,dc=COM",$filter);
    ldap_sort($ldap,$result,"sn");
    $info = ldap_get_entries($ldap, $result);
    for ($i=0; $i<$info["count"]; $i++)
    {
        if($info['count'] > 1)
        break;
            $_SESSION['user']=$info[$i]["givenname"][0];
            #echo $_SESSION['user'];
            header("Location: app.php");        }
    @ldap_close($ldap);
    } else {
    $msg = "Invalid email address / password";
    echo $msg;
    }

}else{
?>
    <form action="#" method="POST">
    <label for="username">Username: </label><input id="username" type="text" name="username" /> 
    <label for="password">Password: </label><input id="password" type="password" name="password" />        
        <input type="submit" name="submit" value="Submit" />
    </form>
<?php } ?> 

这是 app.php

             <?php
           session_start();session_regenerate_id();
      ?>
    <!DOCTYPE html>
    <html>
    <head>
         <title>My App ::Home Page</title>

    </head>

    <body>

    <?php
        if (!isset($_SESSION['user'])) {
        header("Location: login.php"); // If session is not set that redirect to Login Page
      }
    ?>

    // code for app 
    </body>
    </html>

AD身份验证成功但不知何故 $ _ SESSION ['user'] 未传递给app.php。我试图在login.php中打印$ _SESSION ['user']的值,它显示了预期的结果。它总是从app.php重定向到login.php

我做错了什么?为什么isset($ _ SESSION ['user'])无法获取从登录

传递的值

1 个答案:

答案 0 :(得分:0)

我遇到了一些麻烦,但主要原因是它失败了,因为它无法启动会话。这是由<?php之前的空白和 app.php之后的?> 引起的 我花了一段时间才弄清楚这个愚蠢而又严肃的事情。这是 good explanation

希望这有助于某人。