首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用adldap为foreach()提供的参数无效

使用adldap为foreach()提供的参数无效
EN

Stack Overflow用户
提问于 2010-03-19 21:18:47
回答 1查看 1.2K关注 0票数 0

我正在使用adldap http://adldap.sourceforge.net/

我正在将会话从一个页面传递到另一个页面,并检查以确保会话中的用户名是某个成员组的成员,在本例中,它是STAFF组。

代码语言:javascript
复制
<?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组。

为什么它会给我这个问题呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-03-19 21:23:05

根据this source file的说法,如果用户名为空,user_groups()将返回false (在其他一些情况下,也要检查源代码)。我敢打赌,您的$_SESSION["user_session"]是空的,那么$result就是false。您不能在非数组上运行foreach,这就是您收到警告的原因。

您需要找出会话变量为空的原因,并且/或者检查$result是否是一个数组,因为对它执行foreach:

代码语言:javascript
复制
if (is_array($result))
 foreach ($result....
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2477546

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档