Отображение имени пользователя, вошедшего в систему, с помощью adLDAP

Я использую adLDAP для входа на сайт внутренней сети, который я создаю. Я только начал интегрировать LDAP, и я относительно новичок в этой игре.

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

Вот сценарий входа, который я использую. В основном то же, что и в примере с adLDAP.

<?php
//log them out
$logout = $_GET['logout'];
if ($logout == "yes") { //destroy the session
session_start();
$_SESSION = array();
session_destroy();
}

//you should look into using PECL filter or some form of filtering here for POST variables
$username = strtoupper($_POST["username"]); //remove case sensitivity on the username
$password = $_POST["password"];
$formage = $_POST["formage"];

if ($_POST["loginform"]) { //prevent null bind

if ($username != NULL && $password != NULL){
    //include the class and create a connection
    include (dirname(__FILE__) . "/src/adLDAP.php");
    try {
        $adldap = new adLDAP();
    }
    catch (adLDAPException $e) {
        echo $e; 
        exit();   
    }

    //authenticate the user
    if ($adldap->authenticate($username, $password)){
        //establish your session and redirect
        session_start();
        $_SESSION["username"] = $username;
        $_SESSION["loggedin"] = true;
        $redir = "Location: http://" . $_SERVER['HTTP_HOST'] . dirname($_SERVER['PHP_SELF']) . "/loggedin.php";
        header($redir);
        exit;
    }
}
$failed = 1;
}

?>

На странице входа в систему у меня есть этот код:

<?php
session_start();
?>
<?php
$redir = "Location: /Kart";
if (isset($_SESSION['loggedin']) && $_SESSION['loggedin'] == true) {

    include ("main.php");

} else {
    header($redir);
}
?>

И в main.php я пытаюсь включить что-то вроде

<strong>Welcome </strong><?php printf("<b><i>$firstname $lastname</i></b>"); ?> - <a href="Logout.php">click here to log out</a>!

Как я могу отобразить здесь полное имя вошедшего в систему пользователя?

Спасибо!


person Thorbj    schedule 17.04.2015    source источник


Ответы (1)


Свойство, которое вы ищете в adldap, это displayName.

Ознакомьтесь с документацией: http://adldap.sourceforge.net/wiki/doku.php?id=documentation_user_functions#infocollection_username_fields_null

person Marcel Burkhard    schedule 17.04.2015
comment
Спасибо, но как мне это использовать? просто эхо $_SESSION['displayName']? - person Thorbj; 17.04.2015
comment
Это описано здесь: adldap.sourceforge.net/wiki/ - person Marcel Burkhard; 17.04.2015
comment
Мне трудно понять это... Я поместил это поверх страницы входа в систему: <?php session_start(); $_SESSION["username"] include (dirname(__FILE__) . "/src/adLDAP.php"); $user = $adldap->user()->infoCollection($username, array('*')); ?> и это, чтобы отобразить имя: <?php echo $user->displayName; ?>. Но это приводит к сбою страницы... Я совсем не понимаю этого? - person Thorbj; 17.04.2015
comment
Нм, наконец-то понял :) - person Thorbj; 17.04.2015
comment
привет @Thorbj, я тоже пытался получить имя пользователя с помощью adldap, но оно возвращается пустым. Могу ли я узнать, как вы это решаете? не могли бы вы поделиться своим фрагментом кода? - person Slay; 09.07.2015
comment
Конечно @Slay! Извините за поздний ответ кстати! В main.php я использовал это: Welcome <b><?php echo $_SESSION["user"] ?> и в auth.php у меня это: //authenticate the user if ($adldap->authenticate($username, $password) and $adldap->user()->inGroup($username,"First Group Name") or $adldap->user()->inGroup($username,"Secondary Group Name")){ и, наконец, это перед $redir...: $user = $adldap->user()->infoCollection($username, array('*')); $_SESSION["user"] = $user->displayName; Надеюсь, я ничего не забыл сейчас... :) - person Thorbj; 22.07.2015
comment
спасибо за продолжение! @ Thorbj Мне уже удалось заставить это работать! - person Slay; 22.07.2015