Указан неверный аргумент для foreach () с использованием adldap - PullRequest
0 голосов
/ 19 марта 2010

Я использую Adldap http://adldap.sourceforge.net/

И я передаю сеанс от страницы к странице и проверяю, чтобы убедиться, что имя пользователя в сеансе является членом определенной группы участников, в данном примере это группа STAFF.

<?php
    ini_set('display_errors',1);
    error_reporting(E_ALL);
    require_once('/web/ee_web/include/adLDAP.php');
    $adldap = new adLDAP();

    session_start();

    $group = "STAFF";

    //$authUser = $adldap->authenticate($username, $password);

    $result=$adldap->user_groups($_SESSION['user_session']);

    foreach($result as $key=>$value) {
        switch($value) {
            case $group:
                print '<h3>'.$group.'</h3>';
                break;

            default:
                print '<h3>Did not find specific value: '.$value.'</h3>';
            }
        if($value == $group) { print 'for loop broke'; break; }
    }
?>

Это дает мне ошибку: Предупреждение: неверный аргумент, предоставленный для foreach () в строке 15, которая является строкой кода: foreach ($ result as $ key => $ value) {

Когда я раскомментирую код $ authUser = $ adldap-> authenticate ($ username, $ password); и введите соответствующее имя пользователя и пароль, все работает нормально, но мне не нужно этого делать, поскольку сеанс действителен, я просто хочу посмотреть, не входит ли имя пользователя, хранящееся в valid_session, в группу STAFF.

С чего бы мне эта проблема?

1 Ответ

2 голосов
/ 19 марта 2010

Согласно этот исходный файл , user_groups() будет возвращать false, если имя пользователя было пустым (и в некоторых других случаях также проверять источник).Могу поспорить, что ваш $_SESSION["user_session"] пуст, а $result ложно.Вы не можете запустить foreach для не-массива, поэтому вы получаете предупреждение.

Вам необходимо выяснить, почему ваша переменная сеанса пуста, и / или проверить, является ли $resultмассив, потому что делает foreach для него:

if (is_array($result))
 foreach ($result....
...