Попытка получить доступ к смещению массива для значения типа null YII2 - PullRequest
0 голосов
/ 28 мая 2020

У меня есть форма, подключенная к активному каталогу, где я должен создать пользователя, выполнив поиск в Active Directory. Поиск пользователя выполняется в раскрывающемся списке с возможностью поиска, но выдается ошибка «Попытка получить доступ к смещению массива для значения типа null»

Ошибка в строке 48

while ($values["count"] > 0)

Функция в LDAP. php

    public function getUsersAD($uname = "") {
        $host = Yii::$app->params['ldaphost'];
        $domain = Yii::$app->params['domain'];

        $username = Yii::$app->params['username'] . $domain;
        $password = Yii::$app->params['password'];
        $ldapdomain = Yii::$app->params['ldapdomain'];
        $ldapdomain2 = Yii::$app->params['ldapdomain2'];
        $ldaptld = Yii::$app->params['ldaptld'];

        //  $dn = "DC=UAT,DC=UBCRDB,DC=COM";
        $dn = "DC=" . $ldapdomain . ",DC=" . $ldaptld;
        if ($ldapdomain2) {
            $dn = "DC=" . $ldapdomain . ",DC=" . $ldapdomain2 . ",DC=" . $ldaptld;
        }
        $filter = "(&(objectclass=person)(givenName=*)(userPrincipalName={$uname}*))";

         $ad = @ldap_connect($host)
                or die("Couldn't connect to AD!");

        ldap_set_option($ad, LDAP_OPT_PROTOCOL_VERSION, 3);
        ldap_set_option($ad, LDAP_OPT_REFERRALS, 0);

        $bind = @ldap_bind($ad, $username, $password);

        $data = array();
        $result = @ldap_search($ad, $dn, $filter);

        $entry = @ldap_first_entry($ad, $result);

        $values = @ldap_get_values($ad, $entry, "cn");
        while ($values["count"] > 0) {
            $user = array();

            $user["fullName"] = $values[0];  //Full name

            $values = @ldap_get_values($ad, $entry, "telephoneNumber");

            $user["telephoneNumber"] = $values[0];

            $values = @ldap_get_values($ad, $entry, "userPrincipalName");

            $user["value"] = $values[0]; //username

            $user["text"] = str_replace(strtoupper($domain),"",$values[0]); //username

            $user["id"] = str_replace(strtoupper($domain),"",$values[0]); //username

            $values = @ldap_get_values($ad, $entry, "mail"); 

            $user["EmailAddress"] = $values[0];

            $data[] = $user;

            $entry = @ldap_next_entry($ad, $entry);

            $values = @ldap_get_values($ad, $entry, "cn");
        }
        ldap_unbind($ad);

        return $data;
    }
...