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 に答える