0

我正在使用 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; }
    }
?>

它给了我错误:警告:在第 15 行为 foreach() 提供的参数无效,即这行代码:foreach($result as $key=>$value) {

当我取消注释代码 $authUser = $adldap->authenticate($username, $password); 并输入适当的用户名和密码,它工作正常,但我不应该这样做,因为会话是有效的,我只想看看存储在 valid_session 中的用户名是否是 STAFF 组的一部分。

为什么会给我这个问题?

4

1 回答 1

2

根据此源文件user_groups()如果用户名为空,将返回 false(在某些其他情况下,请检查源)。我打赌你$_SESSION["user_session"]是空的,然后$result是假的。您不能foreach在非阵列上运行,这就是您收到警告的原因。

您将需要找出为什么您的会话变量为空,和/或检查是否$result是一个数组,因为对其进行了 foreach:

if (is_array($result))
 foreach ($result....
于 2010-03-19T13:23:05.413 回答