2010-03-19 2 views
0

Я использую adldap http://adldap.sourceforge.net/Недействительный аргумент для Еогеасп() с помощью adldap

И я передаю сессию с одной страницы на другую, и проверки, чтобы убедиться, что имя пользователя в сессии является членом определенной группы пользователей , для этого примера это группа 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; } 
    } 
?> 

Это дает мне ошибку: Warning: Invalid аргумент поставляются для Еогеасп() в строке 15, которое эта строка кода: Еогеасп ($ результат, как $ ключ => $ значение) {

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

Зачем мне это проблема?

ответ

2

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

Вам нужно будет узнать, почему переменная сеанса пуста, и/или проверить $result является ли массив, потому что делает Еогеасп на нем:

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

Я распечатанный переменную и напечатанное соответствующее имя пользователя , $ _SESSION ['user_session'] – Brad

+0

$ result - это не массив, это хорошее начало, чтобы понять, почему это не так. – Brad

+0

@Brad, то это либо эта строка: 'if (! $ This -> _ bind) {return (false); } 'или далее вдоль рекурсивной функции' recursive_groups'. Однако убедитесь, что вы смотрите в своей версии исходного кода adldap. –

Смежные вопросы