Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/228.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用adldap为foreach()提供的参数无效_Php_Session_Ldap_Foreach_Adldap - Fatal编程技术网

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

Php 使用adldap为foreach()提供的参数无效,php,session,ldap,foreach,adldap,Php,Session,Ldap,Foreach,Adldap,我正在使用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 = "ST

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

它给出了一个错误:警告:为第15行的foreach()提供的参数无效,这是以下代码行:foreach($result as$key=>$value){

当我取消注释代码$authUser=$adldap->authenticate($username,$password);并输入适当的用户名和密码时,它可以正常工作,但我不必这样做,因为会话是有效的,我只想看看存储在有效会话中的用户名是否属于工作人员组

<?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; }
    }
?>
为什么它会给我这个问题?

根据,
user\u groups()
将在用户名为空时返回false(在某些情况下,也检查源代码)。我打赌您的
$\u会话[“user\u SESSION”]
为空,
$result
则为false。您不能在非数组上运行
foreach
,这就是您收到警告的原因

您需要找出会话变量为空的原因,和/或检查
$result
是否为数组,因为对其执行foreach操作:

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

我打印出了变量,它打印了相应的用户名。$\u SESSION['user\u SESSION']$result不是数组,这是一个很好的开始,看看它为什么不是数组。@Brad然后是这一行:
if(!$this->\u bind){return(false);}
或递归
递归\u组
函数的进一步操作。不过,请确保查看您的adldap源代码版本。在考虑使用用户\u组()之前,我必须先进行绑定。我想我应该使用ldap\u搜索()对于存储在有效会话中的用户名,如果它返回我要查找的组的名称,则返回true。我需要做的是查看该用户是否是特定组的成员,如果是,则他们可以访问该页面,如果不是,则他们看不到该页面。